gpt4 book ai didi

C - 为什么允许我这样做?

转载 作者:太空狗 更新时间:2023-10-29 15:53:26 24 4
gpt4 key购买 nike

int b[2], *ptr;
b[0] = 5;
b[1] = 7;

ptr = &b[0];
*ptr++ = 66;

printf("%d", *ptr);

为什么我可以执行 *ptr++ = 66 行,即使 = 66 位似乎什么都不做?当我打印 *ptr 时,它是 7。谁能解释为什么?编译器不应该提示 = 66 位没有效果吗?

难道 *ptr++ = 66 基本上等同于 7 = 66 吗?

最佳答案

这是怎么回事:

  1. b[0] 被分配了 66 值,因为您正在引用 ptr,即您正在做 *ptr,然后执行赋值

  2. 指针本身递增,即&b[0]++,变为&b[1]

  3. ptr 现在指向 b[1],即 7

换句话说:递增和赋值是在两个完全不同的事情上进行的。由于它是后缀递增,因此指针在其原始地址接收到新值后递增。

关于C - 为什么允许我这样做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5610132/

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