*号和++属于同一优先级,且方向都是从右向左的,*p++和*(p++)作用相同。
如下例子:
char a[]="asdasf";
char *p=a;
printf("%d\n",p);//打印一地址值x
*p++;
printf("%d\n",p);//打印一地址值x+1
printf("%c\n",*p);//打印s
printf("%s\n",a);//打印asdasf
这里的++作用于p上,先把p++,导致p向后移动了一位,所以*p打印值为s,且*p++执行之后数组a的内容没有改变。
-------------------------------------------------
char a[]="asdasf";
char *p=a;
printf("%d\n",p);//打印一地址值x
(*p)++;
printf("%d\n",p);//打印一地址值x+1
printf("%c\n",*p);//打印b
printf("%s\n",a);//打印bsdasf
这里++作用于*p上,所以*p++执行之后数组a的值改变了。