例: int a[5]={11,22,33,44,55};
int p=a;
printf("%d\n",*p++);
printf("%d\n",(p++));
上面"*p++" 和"*(p++)",都是一样的自右向左的优先级.但又怎么先取值,再加1?
不是先进行"++"后指针"*"吗?
*p++; 不是 *p = *p + 1; 它却是 *p = *(p+1); 而且是后加加。
int a[5]={11,22,33,44,55};
int *p=a;
printf("%d\n",*p++); 输出 a[0]的值 11,后加加:表达式里先用原值,不自增。
出了上面打印语句再自增 *p = *(p+1);
接着打印 printf("%d\n",*p); 打出 a[1]的值 22。
如果我的回答帮助了您,请及时采纳,方法是,点击我回答右边的蓝色采纳按钮。谢谢!
为什么要写这样的代码?可阅读性好还是可维护性好?分开写,永远不会犯错。
上面"*p++" 和"*(p++)",都是一样的自右向左的优先级.但又怎么先取值,再加1?
不是先进行"++"后指针"*"吗?
是这样的呀++位置不同导致p什么时候加1,然后再作指针运算