C语言指针的赋值问题

inta=9;int*p;*P=a;*p=8;请问以上在C语言中有错吗?... int a=9;
int *p;
*P=a;
*p=8;
请问以上在C语言中有错吗?
展开
 我来答
大野瘦子
高粉答主

推荐于2019-11-06 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:31.5万
展开全部

指针在用要注意初始化,例如:

int *p;

p为指针,地址是未知的,如果直接赋值

*p=a;这样编译可以通过,但是会产生警告,p的地址是随机分配的,这样对未知的地址赋值很危险,可能会覆盖掉某些重要数据,所以避免这种危险,在定义指针时注意初始化,也就是赋值。

可以int *p=&a;

或者int *p;

p=&a;

然后再对p进行操作

有错。

注意大小写,还有

int a=9;

int *p;

p=&a;//这个是指针指向a

*p=8;

这样就对了。

扩展资料:

指针的赋值

int *p;

int a;

int b[1];

p = &a; 

p = b; 

指针的赋值,“=”的左操作数能够是*p,也能够是p。

当“=”的左操作数是*p时,改变的是p所指向的地址存放的数据;

当“=”的左操作数是p时,改变的是p所指向的地址。

数组的变量名b表示该数组的首地址,因此p=b;也是正确的

同类型的指针赋值:

int val1 = 18,val2 = 19;

int *p1,*p2;

p1 = &val1;

p2 = &val2;

p1 = p2;   //注意啦,p1指向了val2,而没有指向val1

备注:字符串与指针的初始化和赋值

初始化:

char *cp = "abcdefg"; //这个初始化过程,是将指针cp指向字符串的首地址,而并非传递字符串的值。由于,在C语言里面,没有总体处理一个字符串的机制

赋值:

cp = "abcdefg";

*cp=”abcdefg” ;//错误!字符串常量传递的是它的首地址,不能够通过*cp改动该字符串的值,由于该字符串为常量,而它仅仅是简单的将指针指向该字符串常量。

林声飘扬
推荐于2017-10-15 · TA获得超过1630个赞
知道小有建树答主
回答量:1126
采纳率:50%
帮助的人:945万
展开全部
有错
注意:用指针变量前,必须对指针变量赋值
如:
int i, *p1;
p1=&i;
再如:
int a, b;
int *p1, *p2;
*p1=10; *p2=100;
但指针变量未赋值,即指针指向未知地址,这样是错误的
因此:绝对不能对未赋值的指针变量作“指向”运算。
int a=9,b;
int *p=&b;//必须加上这一句
*P=a;
*p=8;
这样就不会产生错误
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
浑浓强浩然
2019-08-26 · TA获得超过3953个赞
知道大有可为答主
回答量:3138
采纳率:27%
帮助的人:217万
展开全部
p就是一个指针,他指向一个地址,而&p就是p刚才所指向的具体地址,*p是p指向地址里面的东西。也就是值。*p=&a的意思是把a的地址给了*p,这样的话p就指向
(指向a的地址)的地址。对指针赋值必须是int
*p=null;或者int
*p;p=null。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
荷果享社大小子401
2010-06-18
知道答主
回答量:16
采纳率:0%
帮助的人:0
展开全部
p=&a//把a的地址给指针p
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小ku1988
2010-06-18 · 超过43用户采纳过TA的回答
知道答主
回答量:87
采纳率:0%
帮助的人:0
展开全部
指针在用要注意初始化、、、
例如、、这里
int *p;
p为指针、、地址是未知的、、
如果直接赋值、、
*p=a;这样编译可以通过、、
但是注意、、会产生警告、、p的地址是随机分配的、、这样对未知的地址赋值很危险、、可能会覆盖掉某些重要数据、、所以避免这种危险、、在定义指针时注意初始化、、也就是赋值、、
可以int *p=&a;
或者int *p;
p=&a;
然后再对p进行操作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式