*p++,*++p这一系列的问题

img


前面一系列都理解了,只是到最后一次输出p的结果不太明白,能解释一下吗,输出的是什么东西

显然是地址啊,p是指针里面存储的是地址,*p是指向地址对应的值

这里输出的是P的地址,其地址指向的值为66

++*p就是让p指向的内容+1后返回,所以是66

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7616866
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:*p++中*和++的优先级问题
  • 除此之外, 这篇博客: c语言 指针(1) 指向数组的指针中的 关于 *++p, ++*p的问题 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在这里插入图片描述
    在这里插入图片描述

  • 以下回答由chatgpt基于相关博客总结生成:

    p++表示先使用p指向的值,再将指针p向后移动一位;++p表示先将指针p向后移动一位,再使用p指向的值。

    具体的输出结果和使用环境有关,需要结合具体的代码来分析。例如,以下代码中:

    int arr[] = {1, 2, 3, 4, 5}; int p = arr; printf("%d\n", p++); // 输出1 p = arr; printf("%d\n", *++p); // 输出2

    第一行代码中,p++指向arr数组的第一个元素1,输出1后,指针p向后移动到arr数组的第二个元素2。第二行代码中,++p首先将指针p向后移动一位,然后指向arr数组的第二个元素2,输出2。

    在计算机中,指针相当于一个变量,指向内存中的某个位置。p++和++p都可以用来连续访问一段连续的内存,区别在于指针的移动顺序不一样。具体使用哪个,需要结合具体的应用场景来决定。