int main(void) {
unsigned int x[4][3] = {(1,2,3),(4,5,6),(7,8,9),(17,11,12)};
printf("%d, %u, %u, %u \n",**x, **(x+1), **(x+2), **(x+3));
return 0;
}
上述代碼的輸出是3,12,0,0,0。 因爲x存儲數組的第一個元素的地址,它不應該是1,4,7,17嗎?**如何在2維數組中工作?
當我試圖打印
printf("%u, %u \n", x, &x[0][0]);
它顯示了相同的地址2108666688,2108666688
但是,當我嘗試打印使用
for(int i = 0; i<4; ++i)
{
for(int j = 0; j<3 ; ++j)
{
printf("%d ",x[i][j]);
}
printf("\n");
}
我看到輸出
數組3 6 9
12 0 0
0 0 0
0 0 0
那麼,這裏究竟發生了什麼?爲什麼數字沒有正確指定給數組?
「{(1,2,3),(4,5,6),(7,8,9),(17,11,12)}」並不會根據您的預期進行評估。認真對待編譯器的警告。 – alk
是的,總是使用新的代碼 – jku