指针定义NULL后无法赋值?

inta=0xa5;int*p=NULL;为什么*P=a;是错的,p=&a;又是对的。... int a = 0xa5;
int *p = NULL;
为什么
*P = a;是错的,
p = &a;又是对的。
展开
 我来答
百度网友ab0a29f
科技发烧友

2021-11-16 · 智能家居/数码/手机/智能家电产品都懂点
知道答主
回答量:72
采纳率:60%
帮助的人:18.5万
展开全部
1、*p = a 是错的,因为这句话的意思是将变量a的值复制并存放到指针p指向的地址空间里。但是你初始化的时候给指针p赋了NULL,即空指针,所以此时p不指向任何地址空间,那么程序无法将a的值放到存储空间里,所以程序报错。
2、p=&a 是对的,因为int a = 0xa5 这一句代码创建了一个int型变量a,给变量a分配了内存,则变量a存储在某块内存上的,这块内存是有地址的。那么p=&a是将a的地址赋值给指针p,则指针p指向变量a的地址空间。所以这句代码是对的。
百度网友f87e2689
2022-05-31
知道答主
回答量:10
采纳率:0%
帮助的人:1.6万
展开全部
首先:int *p = NULL;这句话的的意思是未给变量p开辟任何内存空间,那么*p这个语法就会报错,为什么?p还没有开辟内存空间,*p取了个寂寞?但是p = xxxx为什么可以,是这句语法是给p开辟空间并且赋值。
但是你这样写就可以:
int a = 10; int *p = new int; *p = a;这样写是正确的,int *p = NULL和 int *p=new int有本质的区别。或者int *p = (int *)malloc(sizeof(int))希望你能看懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
arongustc
科技发烧友

2021-11-15 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:6079万
展开全部
NULL是个地址,这个地址的位置禁止写入数据,所以*P=a是错的
p=&a是把a的地址给P,和*P=a毫无关系啊,你要弄明白它的语义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式