这两种表达方式不同。 下面来看一个示例代码来了解这两个表达式之间的区别。
示例1:
#include <stdio.h>
int main(void)
{
int aiData[5] = {100,200,30,40,50};
int *piData = aiData;
++*piData;
printf("aiData[0] = %d, aiData[1] = %d, *piData = %d", aiData[0], aiData[1], *piData);
return 0;
}
输出:
101 , 200 , 101
解释:
在上面的示例中,涉及两个运算符,并且都具有相同的优先级,具有从右到左的关联性。 所以上面的表达式 ++*p
等价于 ++ (*p)
。 换句话说,它是值的预增量,输出是 101、200、101。
示例2:
#include <stdio.h>
int main(void)
{
int aiData[5] = {100,200,30,40,50};
int *piData = aiData;
*++piData;
printf("aiData[0] = %d, aiData[1] = %d, *piData = %d", aiData[0], aiData[1], *piData);
return 0;
}
输出:
100、200、200
解释:
在上面的示例中,涉及两个运算符,并且它们具有相同的从右到左关联性的优先级。 所以上面的表达式 *++p
等价于 *(++p)
。 换句话说,它是地址的预增量,输出是 100, 200,200。