【发布时间】:2017-02-20 10:36:09
【问题描述】:
为了完全理解这个概念,我正在玩指针,然后想减去两个指针,期望这两个地址之间的距离或其他东西,但显然我错了,所以这是我的代码。
int x = 5, y = 7;
int *p = &y;
int *q = &x;
printf("p is %d\nq is %d\np - q is %d", p, q, (p - q));
为什么程序输出p - q is 1?谢谢。
【问题讨论】:
-
那么您期待什么以及为什么?
-
如果
x和y彼此相邻存储,则它们将相隔一个int大小,因此在特定情况下差异为 1 ...。但是指针差异没有意义,除非你在谈论一个数组——即一个连续的元素块。