我有一个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]);
}
}
这是我的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;
}
我的问题是,ptr1
或ptr2
未指向之前填充arrFillRandom
的数组。
在arrFillRandom
函数中,我用随机数打印出矩阵。例如:
1,0,9 //第一个矩阵的第一行
0,9,4 //第一个矩阵的第二行
8,2 //第二行矩阵的第一行
2,5 //第二行第二行
5,5 //第二行矩阵的第三行
但在main
中,当我想要打印此矩阵的第一个元素时:
printf("\n%d", ptr1[0]);
此行应打印 1 ,但会打印不相关的数字,例如4096.
那么为什么我不能将这个矩阵存储在这个数组中呢?
答案 0 :(得分:0)
您的void arrFillRandom()
函数会分配新的内存并使用
随机数。 arrayPtr
是函数内的局部变量,并为其指定新值
不会更改传递的参数ptr1
或ptr2
。
要填充地址传递给函数的数组,只需删除行
即可arrayPtr = malloc(sizeof(int) * sizeRow * sizeColumn);
您还必须更改
(arrayPtr + i)[j]
到
arrayPtr[sizeColumn * i + j]
在该功能内部。