c语言中*p=a是什么意思?

c语言中*p=a是什么意思??... c语言中*p=a是什么意思?? 展开
 我来答
惑_Eva
2017-01-03 · TA获得超过365个赞
知道答主
回答量:20
采纳率:100%
帮助的人:2万
展开全部

首先来说一下*和&,为了便于理解你可以认为,这里*是取内容,&是取地址。

我不讨论它们的区别,因为*p=&a这个形式一般是错的,常用的是p=&a。

下面比较*p=a和p=&a。看图,图很详细。

显然它们是等价的。

然后比较*p=&a和p=&a;

则这两种都是对指针变量的赋值,赋值有两种形式

①先定义后赋值

 int a=3,*p;(定义指针变量*p)

 p=&a;(对指针变量取地址)

②定义变量的同时赋值

int a=3,*p=&a


也就是说在赋值时,

int *p=&a

相当于

int *p,

p=&a 


它们的区别其实就是

int *p=&a是同时定义*p并对赋值p(即a的地址赋给P),而p=&a,只是对P赋值,没有定义指针变量。

但要注意,只有在同时定义赋值时“*p=&a”这种写法才是对的

其他情况下不要用*p=&a,这种形式,因为根本就不对,如下图。我之前一直的疑问是为什么赋值时*p=&a就不算错了?后来老师给的解释是这种形式只有在上面那种情况下成立,其他的情况确实都是错的。

kaixingui2012
推荐于2017-09-06 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6258万
展开全部

c语言中*p=a是指针变量赋值语句,这种写法有两种可能意思:

  1. 指针变量定义时的初始化赋值

    int a[10];

    int *p=a ; //这时的a是个地址,如:数组名或指针变量,表示定义指针变量p,同时,p指向地址a。 这里的*是跟随int的,用来表示p变量是int *类型。


  2. 指针变量定义后,给指针变量所指内存中的数据赋值

    int a=10, x;

    int *p ;

    p=&x ; //p指向变量x的地址

    *p=a ; //这表示向p所指向的地址中存储一个数据a,a是个整型数据。p是x的地地址,*p就是x,本句相当于x=a ;

    这里的*是指针变量引用操作运算符,表示引用指针中的数据

    注意:

    p=&x ;  很重要,指针变量必须要指向一个明确的地址,然后才能*操作,否则,未指定地址的指针变量被称为野指针,引用野指针会造成程序运行异常。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-25
展开全部
1、在声明语句中int a;int *p = a; // 声明p为整形指针变量,并指向变量a的存储地址。 2、在执行语句中int a = 2,b = 3, *p;*p = b; // p指向的地址单元存入b的是值3......................*p = a; // p指向的地址单元存入a的是z值2 通过以上两个例子可以看出,*p = a在声明语句中和执行语句中的含义是不同的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-25
展开全部
将a的值赋值给指针p

进行这样的操作,你要确保变量a是一个合法的指针!
否则,当你使用指针p时,会出问题!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-25
展开全部
不合法!a不是地址!是变量啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式