为什么一级指针不可以接受另外一个一级指针的地址

比如说:char*p=NULL;char*q=&p;... 比如说 :
char* p =NULL;
char* q = &p;
展开
 我来答
安徽新华电脑专修学院
2018-08-06 · 百度知道合伙人官方认证企业
安徽新华电脑专修学院
安徽新华电脑专修学院始建于1988年,隶属于新华教育集团,是国家信息化教育示范基地、中国 IT 教育影响力品牌院校.
向TA提问
展开全部
其实理论上可以的,因为他们的内存完全兼容,只是c/c++是强类型吧,他默认禁止不在同一等级指针上的相互赋值。其实如果你一定要实现不同级指针之间的赋值的话,请使用强制类型转换。但是如果想获取指针真正指向值的话,再强制转换为原有类型的指针。
正如你上面说的,对于不同等级的指针来讲,他们都是保存的地址,对于32位系统来讲,他们都是占用四个字节,所以讲他们转换为目标指针,或者将目标类型指针转换为原有类型指针,不会出现任何差错,数据不会有任何丢失, 但是请你记住他们真正的类型。
比如:
int num = 10;
int *p = #
int *q = (int *)(&p); //q 就是指向p的地址

printf("%d\n", **((int **)q)); //要想获取真正的值的话,就要将他转换为真正的目标指针
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式