C语言——C语言中指针(*p++等等)中运算符*和++的说明

首先指针中的*运算符与++运算符优先级是相同的,但它们的优先级均高于+,结合方向为自右向左。*p++、(*p)++、*(p++)、*(++p)、*(p+1)

具体详情见下表:

类别数值地址解释
*p++原地址+1等价于*(p++),先得到p指向的值,再将p的地址+1
(*p)++数+1原地址p指向元素的值+1,地址不变
*(p++)原地址+1先得到p指向的值,再将p的地址+1
*(++p)数(原地址+1)原地址+1先使p的地址+1,再取*p的值
*(p+1)数(原地址+1)原地址不变相当于数组a[1],p的地址未改变(仍为a[0]的地址),数值为a[1]的值

若对于*(p+1)和*(p++)不理解,可以看注

注:因为++后置的时候,本身含义就是先运算后增加1(运算指的是p++作为一个整体与前面的*进行运算;增加1指的是p+1),所以实际上*p++符号整体对外表现的值是*p的值,运算完成后p再加1.

发表评论

电子邮件地址不会被公开。 必填项已用*标注