我在5-6年中沒有使用過C,並且覺得這可能是一個非常明顯的答案。我認爲數組在C中被自動傳遞,所以我的代碼應該修改在main函數中創建的數組值。它改變了變化函數中局部變量的值,但是這在主函數中沒有反映出來。傳遞/修改多維數組以在C中運行
這裏是我的我的例子的代碼:
int main(){
int array[3][5];
int i;
int j;\
printf("BEFORE (MAIN):\n");
for(i = 0; i < 3; i++){
for(j = 0; j < 5; j++){
array[i][j] = 1;
printf("%i, ", array[i][j]);
}
}
printf("\n\n");
change(array);
printf("\n");
printf("AFTER (MAIN):\n");
for(i = 0; i < 3; i++){
for(j = 0; j < 5; j++){
array[i][j] = 1;
printf("%i, ", array[i][j]);
}
}
printf("\n");
return 1;
}
void change(int array[][5]){
printf("PRECHANGE (CHANGE):\n");
int i;
int j;
for(i = 0; i < 3; i++){
for(j = 0; j < 5; j++){
printf("%i, ", array[i][j]);
}
}
printf("\n\n");
printf("AFTER CHANGE (CHANGE):\n");
for(i = 0; i < 3; i++){
for(j = 0; j < 5; j++){
array[i][j] = 0;
printf("%i, ", array[i][j]);
}
}
printf("\n");
}
輸出如下:
BEFORE(MAIN): 1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,
PRECHANGE(CHANGE): 1,1,1,1,1,1,1,1,1,1,1,1 ,1,1,
變更以後(CHANGE): 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
AFTER(MAIN): 1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,
我還以爲它應該是這樣的:
前(MAIN): 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
PRECHANGE(CHANGE): 1,1,1 ,1,1 ,1,1,1,1,1,1,1,1,1,1,
變更以後(CHANGE): 0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,
AFTER(MAIN): 0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,
好點! FFS!現在試試我的真實程序,看看爲什麼這不起作用。 – shazbox 2010-10-25 23:11:58