考虑下面的代码片断:指针运算在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