++*b问题

来源:百度知道 编辑:UC知道 时间:2024/06/02 07:46:21
#include <stdio.h>
#include <string.h>
int main()
{
int a[3]={1,22,33};
int * b=a;
++*b=10;
printf("%d\n",*b);
printf("%d %d %d \n",a[0],a[1],a[2]);

return 0;
}
结果是
10
10 22 33

++*a=10;// 中的++是什么的++,加到哪里去了?
printf("%d\n",*b);输出10,说明b还是指向数组a的下标为0的元素,且其值未变。指针,指针值都没变,那++把什么改变了?

*b = 1;
++(*b) = 2;
++*b = 10;相当于, 2 = 10;
没有意思的。

你要是想让 a[1] = 10,应该写 *++b = 10;

a数组a[0]变了
*(指针运算符)优先级比++高
所以++是对b指向的单元(即a[0])进行运算的
还有,=的优先级最低,最后进行了赋值运算,++可以说没有意义