我給下面的代碼片段:指向二維數組
int group1[3][3] = {3,4,5,1,9,8};
int group2[3][3] = {{1},{2,3},{4,5}};
int *gPtr1 = group1;
int *gPtr2 = group2;
的問題是問我的價值:(我應該回答這個問題在紙面上,當然,沒有電腦)
*(gPtr1 + 3)
*(gPtr2 + 3)
通常,我知道一維數組中它增加了一個「地址」而不是值。因此,例如:
int balance[10]={1,2,6,4};
int *p=balance; //p points to balance [0]
p+=3; //points to balance [3]
不過,我似乎無法使一個指向一個二維數組來測試這一點作爲的問題,我總是得到一個「從兼容的指針類型初始化」的錯誤。
如果沒有來自體面編譯器的警告,代碼將無法編譯 - 因爲初始化指針的類型不匹配比第一個初始化器中的不完整大括號更多。你可以通過使用int * gPtr1 =&group1 [0] [0];'和int * gPtr2 =&group2 [0] [0];來解決這些問題;(你會得到代碼作者的意圖你得到)。你知道這個問題正在爭取什麼嗎? – 2014-08-30 15:11:33