C语言中*p=&a是什么意思

*p=&a是什么意思p=&a又是什么意思... *p=&a是什么意思
p=&a又是什么意思
展开
 我来答
greystar_cn
2018-06-27 · 知道合伙人软件行家
greystar_cn
知道合伙人软件行家
采纳数:16407 获赞数:17260
本人主要从事.NET C#方向的技术开发工作,具有10多年的各类架构开发工作经验。

向TA提问 私信TA
展开全部
假设我们定义一个指针p。
那么会经常使用到三个符号:
1,p;
2,*p;
3,&p;
初学者经常会感到很迷茫,到底这三个符号表示什么?
我们知道,p是一个指针变量的名字,表示此指针变量指向的内存地址,如果使用%p来输出的话,它将是一个16进制数。而*p表示此指针指向的内存地址中存放的内容,一般是一个和指针类型一致的变量或者常量。
而我们知道,&是取地址运算符,&p就是取指针p的地址。等会,怎么又来了个地址,它到底和p有什么区别?
区别在于,指针p同时也是个变量,既然是变量,编译器肯定要为其分配内存地址,就像程序中定义了一个int型的变量i,编译器要为其分配一块内存空间一样。而&p就表示编译器为变量p分配的内存地址,而因为p是一个指针变量,这种特殊的身份注定了它要指向另外一个内存地址,程序员按照程序的需要让它指向一个内存地址,这个它指向的内存地址就用p表示。而且,p指向的地址中的内容就用*p表示。
我来举个例子说明这三个符号到底表示什么。
假设有一个楼盘的销售员,当然,现在时髦的叫法是“销售代表”之类的,我们用字母x表示他。他负责销售一个楼盘中的某套房子,此房子有一个地址为A,而他本身也需要有地方住,他居住的房子的地址为B。而这个幸运的销售员很快的卖掉了这套房子给C。现在公司要求对销售的房子必须包产到户,也就是说,现在必须提到x的时候能够管理到C。
如果用程序表示上述内容的话就可以使用指针。首先定义一个指针p,让他指向地址A,地址A中住的是C,而x本来居住的地方的地址是B。OK,现在能知道p,*p,&p表示什么了吗?没错,p表示此指针指向的地址,就是A,而*p表示此地址中居住的人,就是C,而&p表示这个销售员居住的地址,就是B。
1172490637
推荐于2017-09-17 · TA获得超过562个赞
知道小有建树答主
回答量:149
采纳率:0%
帮助的人:125万
展开全部

这个表达式我分成两部分分析:

  1. 左值  *p

        解引用运算符(*)的作用是将一个指针解引用,也就是获取指针指向内存地址的内容。而这里作为左值,就是将右值&a的内容赋予指针所指向的内存空间。

  2.  右值  &a

        取地址运算符(&)作用刚好和解引用相反,是获得一个变量(不能是常量或寄存器变量或函数)的地址。这里就是说取a变量的地址。


综上,这句赋值表达式的意义为

将a变量的地址赋予p指针所指向的内存空间,也就是说**p 的值和 a相同

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鼎湖暗火
2011-02-22 · TA获得超过230个赞
知道答主
回答量:7
采纳率:0%
帮助的人:0
展开全部
*p=&a 是将a的地址赋给p指向的变量
p=&a 是将a的地址赋给p
但在变量定义语句中
int *p=&a;等价于int *p;p=&a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mystudio757
2011-02-22 · TA获得超过587个赞
知道小有建树答主
回答量:116
采纳率:0%
帮助的人:173万
展开全部
语句*p=&a是指把变量a的地址赋给指针变量p所已指向的某个指针变量,说明p是一个指向指针变量的指针变量;语句p=&a是指把a的地址赋给指针变量p,说明p是一个基类型为变量a这种类型的指针变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
志远823
推荐于2017-10-07 · TA获得超过2296个赞
知道小有建树答主
回答量:913
采纳率:66%
帮助的人:1168万
展开全部
一楼说的不对
第一个表示p是一个指向指针的指针. *p取得p指向的指针,&a的地址赋予该指针.
第二个表示p是一个指针,&a的地址赋予p
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式