测试代码:
char a[]="13579";
char* p;
p=a;
y= //这里分别放入下面的语句
printf("y=%c\n",y);
printf("*p=%c",*p);
在后面分别尝试各种赋值给y
Y=*p++;//把*p赋给y,然后p地址++;
结果为
Y=1
*p=3
Y=*(p++);//把*p赋给Y,然后p地址++;
结果与y=*p++一样
结果为:
Y=1
*p=3
Y= *(++p);//先p地址++,然后赋值给y
结果为:
Y=3;
*p=3;
Y=*++p;//同样也是先p地址++,然后赋值给y
结果相同
结果为:
Y=3;
*p=3;
结论:
左++先加1后操作
右++先操作后加1
即
前置++,先+1
后置++,后+1
(*p)++,使用()强制将*与p结合,只能先计算*p,然后对*p整体的值++。
++(*p),先*p取值,再前置++,[该值+1后]作为整个表达式的值。