C语言指针,int a=1; int *p; 其中p=&a和*p=&a有什么区别?p的值是否相同?

 我来答
Negamax
推荐于2017-11-25 · TA获得超过2723个赞
知道小有建树答主
回答量:656
采纳率:100%
帮助的人:291万
展开全部
指针本质就是存储内存地址的一个变量。所以指针可以指向某个变量在内存中存储的单元格嘛。变量去访问单元格最后也是编译器通过变量名和地址一一对应去查找的。而指针里面直接存储的就是地址,所以直接可以访问地址所对应的单元格。

不知道楼主说的是说明情况。所以几种可能的都说一下:

测试代码
#include "stdio.h"
#include "conio.h"

main()
{
int a=1;
int *p=&a;
int *q,*r;
q=&a;
*r=&a;
printf("p=%d,q=%d,r=%d",p,q,r);
getch();
}

int *p=&a ; 这是很标准的,把a的地址个p指针变量。
int *q;q=&a;这也是很标准的。定义一个指针变量,然后将a的地址赋值给她。
int *r; *r=&a; 首先r是个指针变量,但是r指向内存中那个单元格呢?r没有赋初值就开始用了。这是很严重的。r是个游离态的指针。 *r表示取出r对应的那个地址中的值。r都没有指向一个具体的单元格,如何去取值啊。
百度网友b8f909b
2012-04-14 · TA获得超过795个赞
知道小有建树答主
回答量:554
采纳率:0%
帮助的人:474万
展开全部
p=&a 是将变量a的地址赋给指针p本身的存储单元
*p=&a 是将a的地址赋给指针p所指向的内存单元
第二种由于没有对指针初始化,*p不知道指向什么单元(有可能是重要的系统单元),所以这样的操作很危险。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
十面埋伏炸
2012-04-14
知道答主
回答量:10
采纳率:0%
帮助的人:1.5万
展开全部
不相同,p是指该指针的地址,向它赋值是将p指向另一个地址,而*p是指向p地址的指针,它是可以直接赋值的。希望可以帮助你~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b0a9213
2012-04-14 · TA获得超过129个赞
知道答主
回答量:92
采纳率:0%
帮助的人:95.5万
展开全部
p=&a,表示p指向a ,所以p的值为1
*p=&a,是把a的地址的值给*p,p值是不同的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冰水清清蓝
2012-04-14 · TA获得超过462个赞
知道小有建树答主
回答量:150
采纳率:0%
帮助的人:43.9万
展开全部
int *p中其一般形式为:
类型说明符 *变量名;
其中,*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。
例如: int *p1;
表示p1是一个指针变量,它的值是某个整型变量的地址。或者说p1指向一个整型变量。至于p1究竟指向哪一个整型变量,应由向p1赋予的地址来决定。

p就是地址。*p是一个指针型变量 *p=&a错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式