社区
C语言
帖子详情
关于类型转换
hba
2003-01-09 12:17:24
static stCard
{
BYTE Id,
BYTE Value1,
BYTE Value2,
BYTE Round
}stData;
long l = (stCard)stData; // 为什么不能强转换??
long* lp = (stCard*)&stData; // 指针就行??
...全文
60
5
打赏
收藏
关于类型转换
static stCard { BYTE Id, BYTE Value1, BYTE Value2, BYTE Round }stData; long l = (stCard)stData; // 为什么不能强转换?? long* lp = (stCard*)&stData; // 指针就行??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
littlechang
2003-01-09
打赏
举报
回复
指针是对地址的,而数据是对数据本身的。
cb615cb
2003-01-09
打赏
举报
回复
你看一下强制转化后的结果就知道了,一个long的数能够转化为结构体吗?
而指针就不一样了,指向结构体的指针还是指针。
sr71x71
2003-01-09
打赏
举报
回复
因为数据类型的定义、创建等,需要数据的完全信息。因此在类型转换时编译器为保证转换正确,需要检测类型信息。你给的例子中,一个是结构体一个是整型因此编译器不允许转换(如果是派生类和基类之间的转换就可以)至于指针因为存储的均是地址(整型),类型一样因此可转换。
ckacka
2003-01-09
打赏
举报
回复
指针转换带有很大的随意性,对数据隐藏和保护有很好的作用。
比如像 MFC 中的
struct _POSITION{
};
typedef _POSITION* POSITION;
它对于任何指向结构体的指针都可以强制转换,而你自己还可以根据你自己的定义方式转换回来,这样,只有你自己知道里面有什么数据。
对于你的程序,long l = (stCard)stData; 应该可以这样
long l = reinterpret_cast<long>(stData);
然后再在合适的地方转换回来,但是应该保证他们的存储大小相同。
hba
2003-01-09
打赏
举报
回复
也就是说我要强转换只能通过转指针的方式了?
提高C#编程水平的50个要点
- **解释**:`as`操作符尝试将表达式转换为指定的类型,如果转换失败,则返回null,而强制
类型转换
会抛出异常。 - **实践建议**:使用`as`操作符进行
类型转换
可以避免运行时出现异常。 #### 4. 使用条件属性...
腾讯2012笔试题目
类型转换
** 题目描述了一个基类指针和一个派生类指针之间的转换过程。这里涉及到C++中的类型安全转换。 - **选项分析:** - A: 使用`static_cast`从派生类指针转换到基类指针是安全的。 - B: 首先使用`static_...
json-lib-2.4 jar 程序文件
5. **自定义
类型转换
**:对于自定义的Java类,可以实现`net.sf.json.JSONSerializable`接口或使用`JSONObject beanProcessor`来定义自定义的序列化和反序列化规则。 6. **JSONPath支持**:JSON-Lib提供了一种类似...
xstream-1.4.8的jar包、源码、说明文档.zip
这包括如何设置安全策略以防止潜在的跨站脚本攻击(XSS),如何自定义转换器以处理自定义类型的对象,以及如何处理集合和复杂类型的序列化。文档还会涵盖 XStream 提供的各种序列化选项,比如是否保留字段顺序,或者...
commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar程序文件
2. **流操作**:如读写输入/输出流,转换不同类型的流,以及缓冲流操作。 3. **文件过滤器**:可以用来筛选特定类型的文件,比如寻找所有.txt文件。 4. **字符集转换**:在处理文件内容时,可以方便地进行字符编码的...
C语言
70,039
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章