1个回答
2018-08-06 · 百度知道合伙人官方认证企业
关注
展开全部
其实理论上可以的,因为他们的内存完全兼容,只是c/c++是强类型吧,他默认禁止不在同一等级指针上的相互赋值。其实如果你一定要实现不同级指针之间的赋值的话,请使用强制类型转换。但是如果想获取指针真正指向值的话,再强制转换为原有类型的指针。
正如你上面说的,对于不同等级的指针来讲,他们都是保存的地址,对于32位系统来讲,他们都是占用四个字节,所以讲他们转换为目标指针,或者将目标类型指针转换为原有类型指针,不会出现任何差错,数据不会有任何丢失, 但是请你记住他们真正的类型。
比如:
int num = 10;
int *p = #
int *q = (int *)(&p); //q 就是指向p的地址
printf("%d\n", **((int **)q)); //要想获取真正的值的话,就要将他转换为真正的目标指针
正如你上面说的,对于不同等级的指针来讲,他们都是保存的地址,对于32位系统来讲,他们都是占用四个字节,所以讲他们转换为目标指针,或者将目标类型指针转换为原有类型指针,不会出现任何差错,数据不会有任何丢失, 但是请你记住他们真正的类型。
比如:
int num = 10;
int *p = #
int *q = (int *)(&p); //q 就是指向p的地址
printf("%d\n", **((int **)q)); //要想获取真正的值的话,就要将他转换为真正的目标指针
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询