Can';t将数组的元素指向或存储在新数组中

Can';t将数组的元素指向或存储在新数组中,c,arrays,pointers,multidimensional-array,C,Arrays,Pointers,Multidimensional Array,我有一个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 =

我有一个
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("%d\t", (arrayPtr + i)[j]);
    }
}
我的问题是
ptr1
ptr2
没有指向以前填充的数组
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
是函数内部的局部变量,并为其指定新值 不更改传递的参数
ptr1
ptr2

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

arrayPtr = malloc(sizeof(int) * sizeRow * sizeColumn);
你也必须改变

(arrayPtr + i)[j]


在该函数内部。

谢谢您的解决方案,但我有点困惑。如果我不写任何关于内存的东西,如果我不使用
malloc
,编译器怎么知道应该为这个数组分配多少空间?我想,
matrix1[2][3]
matrix2[2][2]
就足够了,对吧?当我在数组中使用指针时,有时会很难理解。@lombranzo:是的,
matrix1[2][3]
已经是数组了。顺便说一句,您可以将函数调用为
arrFillRandom(matrix1,2,3,10)(arrayPtr + i)[j]
arrayPtr[sizeColumn * i + j]