【发布时间】:2014-10-20 10:15:03
【问题描述】:
我有一个关于指针算术的考试修订问题,我们减去两个数组变量的地址的部分对我来说没有意义。
一个数组实际上等于另一个数组。我了解各个输出 对于每个数组变量,在这种情况下是两个地址之间的差异 是 16,给定这个操作系统上的 int = 4 个字节。
我不明白为什么减法会得到 4。 我的逻辑是它们在数组中相隔 4 个位置,但这对我来说没有意义。
int main(void)
{
int oddNums[5] = {1, 3, 5, 7, 9};
int *ip = oddNums;
printf("&oddNums[4] %d - ip %d= %d\n",&oddNums[4], ip, &oddNums[4] - ip);
/*prints &oddNums[4] 2686740 - ip 2686724= 4*/
return EXIT_SUCCESS;
}
【问题讨论】:
标签: c arrays pointer-arithmetic addressof