考慮下面的代碼片斷:指針運算在C
int (*p)[3];
int (*q)[3];
q = p;
q++;
printf("%d, %d\n", q, p);
printf("%d\n", q-p);
我知道指針運算是智能的,這意味着操作q++
進步超前q
足夠的字節,以指向下一個3-整數陣列,所以它並不讓我驚訝的是,第一印刷是「12, 0
」,這意味着遞增q
使它在12
更大但第二打印確實我驚奇。它打印1!
那麼爲什麼要打印1而不是12呢?它只是讓我困惑。
所以沒有辦法採取兩個指針,並獲得他們的差異字節? – 2009-04-17 09:14:21
將指針轉換爲(char *),然後您將得到字節差異。 – 2009-04-17 09:15:59