请教一下各位C语言指针中的*p++和p++的区别是什么呢,它们的用处是一样的吗?
肯定不一样!
*p++指的是p指针指向的地址的内容加1;
p++指的p指针指向的地址加1,如果p定义的是32位地址,这里加1实际地址位是指向后4个字节的地址!
p++是先将p所指向的值取出来,然后再将p指针自增1个单位。也就是p++等价于*(p++)。
p++是将指针p自增1个单位,不涉及指向的值。
在具体应用中,*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;
}