C语言学习指针遇到的一些问题

请教一下各位C语言指针中的*p++和p++的区别是什么呢,它们的用处是一样的吗?

肯定不一样!
*p++指的是p指针指向的地址的内容加1;
p++指的p指针指向的地址加1,如果p定义的是32位地址,这里加1实际地址位是指向后4个字节的地址!

p++是先将p所指向的值取出来,然后再将p指针自增1个单位。也就是p++等价于*(p++)。
p++是将指针p自增1个单位,不涉及指向的值。

在具体应用中,*p++通常用于遍历数组,取出数组元素的值,而p++则用于指针计算和指针移动

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/267353
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C语言之指针*p++和*(p++)区别
  • 除此之外, 这篇博客: 数据结构01:单链表(C/C++语言)中的 计算从某个结点p开始直到链表末尾的结点总数(包括此结点p) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • int listLength(LNode *p) {
        /*从结点p开始计数,统计后面链接的结点数量(包括p本身)*/
        if (p == nullptr) {
            return 0;
        }
        int number = 0;
        while (p != nullptr) {
            number++;
            p = p->next;
        }
        return number;
    }