社区
C语言
帖子详情
指针类形转换
小清新爱大光明
2011-10-16 05:30:40
int a, *b;
b = (int *)a;
这样可以嘛?
若可以的话,a未初始化,转换后b的值也只是0xcccccccc,和没执行一样,有意义嘛?
...全文
132
17
打赏
收藏
指针类形转换
int a, *b; b = (int *)a; 这样可以嘛? 若可以的话,a未初始化,转换后b的值也只是0xcccccccc,和没执行一样,有意义嘛?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
追求执着
2011-10-17
打赏
举报
回复
强制转换本来就不安全的!
nand库路泽
2011-10-17
打赏
举报
回复
[Quote=引用 2 楼 pqpqr 的回复:]
谢谢1楼, 你说的都知道 就是虽然编译器通过了 b = (int *)a; 但是这语句是对的嘛?个人感觉不对。
[/Quote]对着的啊,格式转换!!
赵4老师
2011-10-17
打赏
举报
回复
如果是全局变量而且是在DOS下的话,b指向INT0的低字。
小清新爱大光明
2011-10-17
打赏
举报
回复
这是道面试题,多选。不知道该不该选。
AndyZhang
2011-10-17
打赏
举报
回复
这样没意义
York·Zhang
2011-10-16
打赏
举报
回复
这样做是把a的值设为b的地址;
语法上没有错
希望你能理解,这样做是比较危险的
QQ551780977
2011-10-16
打赏
举报
回复
[Quote=引用 9 楼 cfjtaishan 的回复:]
这样做我看没什么意思吧, 如果你是将一个int型指针转化成char型指针会有点意思,反之依然。
[/Quote]
int 4个字节,char 一个字节,从int 转char 好像不合常理..
pathuang68
2011-10-16
打赏
举报
回复
[Quote=引用 2 楼 pqpqr 的回复:]
谢谢1楼, 你说的都知道 就是虽然编译器通过了 b = (int *)a; 但是这语句是对的嘛?个人感觉不对。
[/Quote]
这样写的语法是没有错的。a是一个int,而所有的指针都是int,所以形如b = (int *)a; 将一个int转换成一个指针,在语法上是木有问题的。
问题是这样的做法比较危险,在实际工作中绝大部分情况下都要避免这样的做法。
自信男孩
2011-10-16
打赏
举报
回复
这样做我看没什么意思吧, 如果你是将一个int型指针转化成char型指针会有点意思,反之依然。
Athenacle_
2011-10-16
打赏
举报
回复
从语法来说,是对的,但逻辑是否出错就看程序员的了
changer001
2011-10-16
打赏
举报
回复
for(i = 1; i < 100; i++)
{
d = i;
if(((d + 1) % 2 ==0) && ((d + 2) % 3 == 0) && ((d + 3) % 7 == 0 ))
printf("%4d", d + 3);
}
最终的结果是打印 (d + 3)
changer001
2011-10-16
打赏
举报
回复
b = (int *)a;如果a的默认值是该编译器的有效地址的范围之内,那么将它强制转换为地址是可行的,这种方法在嵌入式中用的比较多,比如说将一个字面值0xB0000000设为地址,那么就应该写成 b = (int *)0xb0000000;
小清新爱大光明
2011-10-16
打赏
举报
回复
如果这是道是非题,那int a, *b;b = (int *)a; 是对的还是错的?
「已注销」
2011-10-16
打赏
举报
回复
编译器只管你语法语义相关问题,
比如,汉语“你爱她”,编译器只管这句话语法对不对,如果符合汉语,就可以了,至于,你该不该爱她,编译器就不管了,那是你个人的问题。
fukang258369
2011-10-16
打赏
举报
回复
[Quote=引用 2 楼 pqpqr 的回复:]
谢谢1楼, 你说的都知道 就是虽然编译器通过了 b = (int *)a; 但是这语句是对的嘛?个人感觉不对。
[/Quote]
编译器没有那么聪明,它可以这样理解:把a当成是一个地址值,然后赋给指针b,毕竟指针的值是地址的大小,也是个整数。--------个人意见。
小清新爱大光明
2011-10-16
打赏
举报
回复
谢谢1楼, 你说的都知道 就是虽然编译器通过了 b = (int *)a; 但是这语句是对的嘛?个人感觉不对。
changer001
2011-10-16
打赏
举报
回复
int a, *b;:a是int型变量,没有初始化;b是指向int型的指针;
b = (int *)a; :将int型的a强制转换为指针变量,将此指针赋值到指针变量b;
强制转换的是a的类型,这样a默认初始化的值就成为指针变量b的值,即b = 0Xcccccccc(默认);
呵呵呵,希望能帮到你!
《C深度解析》第7、8章 结构体/共用体/枚举,杂项(自动类型
转换
、大小端序等)
第7章: 1. 结构体 结构体定义、访问、传参,结构体对齐(offsetof宏... 枚举 第8章: 自动类型
转换
、大小端序、typedef、编译器优化、extern "C"、程序调试、变参函数、do{}while(0)、内嵌汇编、调试版与发行版、断言
什么情况下
指针
类型
转换
会改变
指针
的值
C++多重继承下的
指针
类型
转换
在C++中,
指针
的类型
转换
是经常发生的事情,比如将派生类
指针
转换
为基类
指针
,将基类
指针
转换
为派生类
指针
。
指针
的本质其实就是一个整数,用以记录进程虚拟内存空间中的地址编号,而
指针
的类型决定了编译器对其指向的内存空间的解释方式。 基于上面的理解,我们似乎可以得出一个结论,C++中对
指针
进行类型
转换
,不会改变
指针
的值,只会改变
指针
的类型(即改变编译器对该
指针
指
C语言类型
转换
-自动类型
转换
、强制类型
转换
、
指针
类型
转换
数据类型
转换
就是将数据(变量、数值、表达式的结果等)从一种类型
转换
为另一种类型。 自动类型
转换
自动类型
转换
就是编译器默默地、隐式地、偷偷地进行的数据类型
转换
,这种
转换
不需要程序员干预,会自动发生。 将一种类型的数据赋值给另外一种类型的变量时就会发生自动类型
转换
,例如: float f = 100; 100 是 int 类型的数据,需要先
转换
为 float 类型才能赋值给变量 f。再如: int n = f; f 是 float 类型的数据,需要先
转换
为 int 类型才能赋值给变量 n。 在赋值运算中,
指针
类型和
指针
类型
转换
的理解
前几天在判断“值相同的两个
指针
所指向的变量的值可以不同”这句话时,发现自己对
指针
类型一些概念仅仅是记住了结论。于是查阅了一些资料,记录一下一些与
指针
类型和
指针
类型转化相关的知识。 一些用到的 开始之前,先来复习一些会用到的知识。 1.地址,字节,位 位(bit)是电子计算机中最小的数据单位。每一位的状态只能是0或1。 字节(Byte)是用于计量存储容量的一种单位,每一...
C++的
指针
类型
转换
在C++中,
指针
的类型
转换
是经常发生的事情,比如将派生类
指针
转换
为基类
指针
,将基类
指针
转换
为派生类
指针
。
指针
的本质其实就是一个整数,用以记录进程虚拟内存空间中的地址编号,而
指针
的类型决定了编译器对其指向的内存空间的解释方式。 基于上面的理解,我们似乎可以得出一个结论,C++中对
指针
进行类型
转换
,不会改变
指针
的值,只会改变
指针
的类型(即改变编译器对该
指针
指向内存的解释方式),但是这个结论在C+
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章