后缀++的优先级比*高,但是使用却非常容易出错,今天做题时就踩坑了,在此记录一下。
- *p++的意思是 取出来地址p的变量,然后地址p++,而不是对地址p中的元素进行++
- (*p)++是对地址p中的变量进行++
实例代码1
void func(int *num)
{
*num++;
}
void func2(int *num)
{
(*num)++;
}
int main1()
{
int a = 2;
printf("%d\n", a); //2
func(&a);
printf("%d\n", a); //2
func2(&a);
printf("%d\n", a); //3
return 0;
}

实例代码2
int main()
{
int num[5] = { 1, 2, 3, 4, 5 };
int *p = num;
printf("%d\n", *p); // 1 p指向第一个元素
printf("%d\n", *p++); // 1 打印第一个元素,然后p指向第二个元素
printf("%d\n", *p); // 2 验证p的指向为第二个元素
printf("%d\n", (*p)++); // 2 取得第二个元素,将其++,p还指向第二个元素
printf("%d\n", *p); // 3 验证p的指向为第自增过后的二个元素
//打印数组,观察第二个和第三个元素
int i = 0;
for (i = 0; i < 5; i++)
{
printf("%d ", num[i]);
}
return 0;
}

本文讲述了++操作符在指针操作中的常见误区,通过实例说明*p++与(*p)++的区别,并提供代码演示,帮助读者理解在C/C++中如何正确使用指针的自增操作。
1万+

被折叠的 条评论
为什么被折叠?



