【发布时间】:2010-10-20 01:38:09
【问题描述】:
考虑以下代码片段:
int (*p)[3];
int (*q)[3];
q = p;
q++;
printf("%d, %d\n", q, p);
printf("%d\n", q-p);
我知道指针算法是智能的,这意味着操作 q++ 前进了 q 足够的字节指向下一个 3 整数数组,所以我并不惊讶第一次打印是 '@987654324 @' 这意味着增加 q 使其在 12 中变大。
但第二次打印确实让我感到惊讶。它打印 1!
那么为什么它会打印 1 而不是 12?这让我很困惑。
【问题讨论】:
标签: c pointers pointer-arithmetic