【C语言,为什么类型不同的指针不能被赋值】

如inta=64,*q=&a;floatb=65,*p;不可以进行p=q....
int a=64,*q=&a;
float b=65,*p;
不可以进行p=q.
展开
 我来答
看灰过来了
2012-06-29 · TA获得超过879个赞
知道小有建树答主
回答量:508
采纳率:83%
帮助的人:329万
展开全部
对于指针变量本身,所需的存储空间不管是什么类型的,都是一致的,区别在于它指向的变量的类型,不同的编译系统对类型所需空间的大小也是不一样的。例如有的int就是2个字节,而有的就是4个字节。
如果int是2个字节,float是4个字节,那么将其地址放在指针变量以后,类型决定了通过指针变量来操作指向的数据,是从起始地址开始的顺序几个字节中存取数据,如果是int型,那就是从地址开始的2个字节中存取数据,如果是float型,那就是从地址开始的4个字节中存取数据。这才是你提的问题的根本区别所在。
o默化o
2012-06-27 · TA获得超过335个赞
知道小有建树答主
回答量:155
采纳率:0%
帮助的人:168万
展开全部
因为指针的类型不同,代表指针的运算方式也不一样,所以运算后所指向的地址不一样。
追问
是不是int和float分配的地址类型也不一样?
追答
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dczsz
2012-06-29
知道答主
回答量:34
采纳率:0%
帮助的人:10.2万
展开全部
int和float分配的地址类型是一样的
但这两个指针的数据类型不同
分别为Int * 、float *
如果要相互赋值的话就应当用强制类型转换
p=(float *) q;
就是对的了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e1d3a7c54
2012-06-28 · TA获得超过127个赞
知道答主
回答量:101
采纳率:0%
帮助的人:53.7万
展开全部
你试试强制类型转换
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式