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

c语言的指针问题

c语言的指针问题

C
桃花细逐杨花落 2017-08-01 09:52:59
int n=12345; int *ptr; ptr=&n; printf("%d \n",*ptr); 我知道*是获取数值的。明明ptr只指向n的内存地址,为什么*ptr会获取到n的数值?
查看完整描述

2 回答

已采纳
?
__innocence

TA贡献313条经验 获得超208个赞

ptr只指向n的内存地址,*ptr会获取到n的数值,你都把答案说出来了。

ptr是n的地址,*ptr就是这个地址的值。

简单来说,* 和 &可以互相抵消

ptr=&n;

左右同时加上*:

*ptr = *&n

也就是:

*ptr = n


查看完整回答
反对 回复 2017-08-01
  • 桃花细逐杨花落
    桃花细逐杨花落
    先忽略printf语句。 ptr=&n,执行完这个语句,是不是意味着ptr获取到了n的值和内存地址?
  • __innocence
    __innocence
    指针的意思,就是根据地址来获取这个地址的值。*ptr是值,ptr是地址。&n是n这个值的地址,ptr=&n,意味着ptr是n这个值的地址,*ptr是n的值。
  • 桃花细逐杨花落
    桃花细逐杨花落
    明白了。。。你解释很详细,还有个问题。还是上面的代码,为什么ptr=*n; 编译器会报错?
点击展开后面5
  • 2 回答
  • 0 关注
  • 1262 浏览

添加回答

举报

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