c -不能在新数组中指向或存储数组中的元素



我有一个arrFillRandom函数,它用随机数填充数组并将其打印出来。

void arrFillRandom(int *arrayPtr, int sizeRow, int sizeColumn, int randomRange) {
    int i, j;
    arrayPtr = malloc(sizeof(int) * sizeRow * sizeColumn);
    for (i = 0; i < sizeRow; i++)
        for (j = 0; j < sizeColumn; j++)
            (arrayPtr + i)[j] = (rand() % randomRange);
    
    for (i = 0; i < sizeRow; i++) {
        printf("n");
        for (j = 0; j < sizeColumn; j++)
            printf("%dt", (arrayPtr + i)[j]);
    }
}
这是我的main:
int main() {
void arrFillRandom(int *arrayPtr, int sizeRow, int sizeColumn, int randomRange);
int matrix1[2][3];
int matrix2[3][2];
int *ptr1, *ptr2;
ptr1 = &matrix1[0][0];
ptr2 = &matrix2[0][0];
arrFillRandom(ptr1, 2, 3, 10);
arrFillRandom(ptr2, 3, 2, 10);
printf("n%d", ptr1[0]);
return 0;
}

我的问题是ptr1ptr2不指向arrFillRandom之前填充的数组。在arrFillRandom函数中,我用随机数打印出矩阵。例如:

1,0,9 //第一个矩阵的第一行

0,9,4 //第一个矩阵的第二行

8,2 //第二个矩阵的第一行

2,5 //第二个矩阵的第二行

5,5 //第二个矩阵的第三行

但是在main中,当我想打印这个矩阵的第一个元素时:

printf("n%d", ptr1[0]);

这一行应该打印1,但是它打印的是不相关的数字,比如4096。

那么为什么我不能把这个矩阵存储在这个数组中呢?

您的void arrFillRandom()函数分配新的内存并将其填充为随机数字。arrayPtr是函数内部的局部变量,并为其赋一个新值不改变传递的参数ptr1ptr2

要填充其地址传递给函数的数组,只需删除

arrayPtr = malloc(sizeof(int) * sizeRow * sizeColumn);

您还必须更改

(arrayPtr + i)[j]

arrayPtr[sizeColumn * i + j]

相关内容

  • 没有找到相关文章

最新更新