
【C语言,为什么类型不同的指针不能被赋值】
4个回答
展开全部
对于指针变量本身,所需的存储空间不管是什么类型的,都是一致的,区别在于它指向的变量的类型,不同的编译系统对类型所需空间的大小也是不一样的。例如有的int就是2个字节,而有的就是4个字节。
如果int是2个字节,float是4个字节,那么将其地址放在指针变量以后,类型决定了通过指针变量来操作指向的数据,是从起始地址开始的顺序几个字节中存取数据,如果是int型,那就是从地址开始的2个字节中存取数据,如果是float型,那就是从地址开始的4个字节中存取数据。这才是你提的问题的根本区别所在。
如果int是2个字节,float是4个字节,那么将其地址放在指针变量以后,类型决定了通过指针变量来操作指向的数据,是从起始地址开始的顺序几个字节中存取数据,如果是int型,那就是从地址开始的2个字节中存取数据,如果是float型,那就是从地址开始的4个字节中存取数据。这才是你提的问题的根本区别所在。
展开全部
因为指针的类型不同,代表指针的运算方式也不一样,所以运算后所指向的地址不一样。
追问
是不是int和float分配的地址类型也不一样?
追答
对
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int和float分配的地址类型是一样的
但这两个指针的数据类型不同
分别为Int * 、float *
如果要相互赋值的话就应当用强制类型转换
p=(float *) q;
就是对的了
但这两个指针的数据类型不同
分别为Int * 、float *
如果要相互赋值的话就应当用强制类型转换
p=(float *) q;
就是对的了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你试试强制类型转换
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询