*p++和*(p++)是一样的
*p++逻辑上等价于
*p;
p+=1;
*(p++)逻辑上等价于
*(p);
p+=1;
*p++; 表示p当前指向位置a[0]的值,然后p移动int类型4个字节,指向a中下一个元素,也就是a[1].
*(p++)表示a[1]的值 。
你说的没错,两个表达式不一样
*p++; 是先取值,再指针偏移
*(p++)是指针偏移,再取值。
不过对于优先级不清楚地时候,最好就别这么写给自己找麻烦。大多数公司里面的编码规范是要求分成两句写的
对于p值来说*p++和*(p++)当然是一样的,但是你获得的值就会不同:
例如
int a = *p++;
int b = *(p++);
a和b不同,但是p的值一样。
我试验了一下,结果一样,说明这两个等价,实际结合理论,比如int a[5]={1,4,5,6,7,8} *p=a *p++的意思是先求*p是a[0]=1 然后*p++的值是1,p=2; 如果是*(p++)的话,p++的值没变,p的值加1,然而*(p++)的值就不变了,所以结果一样 不知道朋友能否明白
很简单啊,p++是在执行本语句以后p再加1的,以后建议使用++p。可以避免一些疑惑!仔细看看i++与++i的区别就知道了。