gpt4 book ai didi

c - 递增指针 (ptr++) 和 (*ptr++)

转载 作者:太空宇宙 更新时间:2023-11-04 05:10:48 26 4
gpt4 key购买 nike

当我有这个疑问时,我正在重新访问指针。

int *ptr;
int arr[5] = {10,20,30,40,50};
ptr = &arr[0];

现在 printf("Value: %d",*ptr); 会打印 10

如果我这样做:

ptr++;
printf("Value: %d",*ptr);

结果将是:20

同样,如果我这样做:

*ptr++;
printf("Value: %d",*ptr);

结果是:30

但是

printf("Value: %d",++*ptr);

给我 31

我想因为 ptrint 类型,当我递增它时,它会跳转 4 个字节到下一个内存位置。但为什么它对 *ptr++ptr++ 表现出相同的行为,而对 ++*ptr 表现出相同的行为?

最佳答案

因为优先级

  • *ptr++*(ptr++) 相同,指针被递增,但它的前一个值被取消引用。
  • ptr++ptr++ 相同。
  • ++*ptr++(*ptr) 相同,即它增加了指向的东西,而不是指针。

关于c - 递增指针 (ptr++) 和 (*ptr++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10066326/

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