gpt4 book ai didi

c - C中的指针运算

转载 作者:太空狗 更新时间:2023-10-29 16:39:41 26 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/759663/

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