gpt4 book ai didi

c - C 中的指针算术

转载 作者:行者123 更新时间:2023-11-30 16:32:51 25 4
gpt4 key购买 nike

考虑以下代码片段:

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 呢?这让我很困惑。

最佳答案

++ 增量运算符一样,带有指针的 - 减法运算符也会考虑所指向对象的大小。具体来说,返回的结果是指针值的字节数差除以所指向对象的大小(在您的示例中为 12)。所以差值是 12 个字节,除以大小 12,即 1。

关于c - C 中的指针算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49960067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com