为了账号安全,请及时绑定邮箱和手机立即绑定

C语言中有关指针运算的问题?

C语言中有关指针运算的问题?

C
做一个好码农 2017-05-22 17:09:51
在指针运算中,*p++是什么意思啊? 课本上写的:先取p所指变量的值,后地址加一。 是这个意思吗?我怎么觉得是:先取p所指变量的值,后变量值加一呢?
查看完整描述

3 回答

?
江户川秋风

TA贡献78条经验 获得超21个赞

#include <stdio.h>

int main(int argc, char *argv[])
{
	int x=0;
	int *p=&x; 
	printf("x的值:%d\n",x);
	printf("x在内存中的地址:%p\n",p);
	*p++;
	printf("x的值:%d\n",x);
	printf("x在内存中的地址:%p\n",p);
	return 0;
}

运行结果:

x的值:0

x在内存中的地址:0022FF44

x的值:0

x在内存中的地址:0022FF48



相当于把x往后移动了4个字节


查看完整回答
1 反对 回复 2017-05-22
?
望远

TA贡献1017条经验 获得超1032个赞

这里有运算符优先级的问题,*p++这里先进行*p运算,取出指针p所指变量地址的值,再进行++运算,你理解的没错,书上的应该这样写*(p++)
查看完整回答
1 反对 回复 2017-05-22
  • onemoo
    onemoo
    ++ 的优先级要高于 * 的,所以 *p++ 就是 *(p++),书上写的没错。
  • 望远
    望远
    哦哦,记错了,这两个运算符同级但是计算从右至左运算。
  • onemoo
    onemoo
    额...你确实是记错了。 这个后置自增的优先级要高于 *,前置自增才是和 * 同级。
点击展开后面3
?
慕粉2201162086

TA贡献2条经验 获得超0个赞

指针变量储存的就是变量的地址值
查看完整回答
反对 回复 2017-05-22
  • 3 回答
  • 1 关注
  • 2486 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信