0
我有一個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]);
此行應打印 ,但它打印不相關的數字,如4096.
那麼,爲什麼我不能在這個數組中存儲矩陣?
感謝您的解決方案,但我有點困惑。如果我不寫任何有關內存的內容,如果我不使用'malloc',編譯器如何知道應該爲這個數組分配多少空間?我想'matrix1 [2] [3]'和'matrix2 [2] [2]'就夠了,對吧? 當我使用數組指針時,有時無法輕鬆理解事物。 – sedooe
@lombranzo:是的,'matrix1 [2] [3]'* *已經是一個數組了。順便說一句,你可以調用你的函數作爲'arrFillRandom(matrix1,2,3,10);'因爲當一個參數作爲參數傳遞給函數時,數組「衰變」爲指向第一個元素的指針。 –
我知道,但在分配時,它被要求像我寫的那樣調用該函數。再次感謝。 :) – sedooe