void add(int* p)
{
*p++;
}
#include<stdio.h>
int main()
{
int num = 0;
add(&num);
printf("%d\n",num);
add(&num);
printf("%d\n",num);
add(&num);
printf("%d\n",num);
return 0;
}
我们运行后发现结果是3个0
问题出在哪呢
是因为因为++的优先级比较高,使得++的是p而不是*p
所以我们这样
void add(int* p)
{
(*p)++;
}
#include<stdio.h>
int main()
{
int num = 0;
add(&num);
printf("%d\n",num);
add(&num);
printf("%d\n",num);
add(&num);
printf("%d\n",num);
return 0;
}