VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 2386|回复: 5

[求助] 将char数组直接强制转换成结构体类型只能在vc++中实现么?

[复制链接]
34_avatar_middle
在线会员 发表于 2015-11-4 13:38:38 | 显示全部楼层 |阅读模式
3驿站币
我看到一段代码
LPLOGPALETTE pLogPal = (LPLOGPALETTE) new char[2 * sizeof(WORD) + m_nColorTableLength * sizeof(PALETTEENTRY)];
在C++中可以直接将数组类型直接强制转换成结构体类型么?有什么需要注意的么?

最佳答案

查看完整内容

可以的,new 出来的只是一块内存而已,具体要以什么类型展现强转就行了




上一篇:最近开发需要和PB混合编程,能否来个教程。
下一篇:【关于头文件的重复包含、两个头文件的互相包含问题】【都有什么解决放法】
51_avatar_middle
online_admins 发表于 2015-11-4 13:38:39 | 显示全部楼层
可以的,new 出来的只是一块内存而已,具体要以什么类型展现强转就行了

评分

参与人数 1驿站币 +1 热心值 +1 收起 理由
34_avatar_small Smoke + 1 + 1

查看全部评分

34_avatar_middle
ico_lz  楼主| 发表于 2015-11-5 09:33:08 来自手机 | 显示全部楼层
在mingw中和VC中是一样的么?
34_avatar_middle
ico_lz  楼主| 发表于 2015-11-5 18:43:39 | 显示全部楼层
  1.         cout << sizeof(char) << endl;
  2.                 char *char_stu = new char[3];
  3.                 *char_stu = 2;
  4.                 char_stu++;
  5.                 *char_stu = 3;
  6.                 char_stu++;
  7.                 *char_stu = 4;
  8.                
  9.                 Student stu = (Student) char_stu;
  10.                 cout << stu.a << endl;
  11.                 cout << stu.b << endl;
  12.                 cout << stu.c << endl;
  13.                

  14.         }
复制代码

这是我的代码,编译时提示不能从char指针强制转换成Student结构

error C2440: 'type cast' : cannot convert from 'char *' to 'struct tagStudent'

编译器是VC6.0
34_avatar_middle
ico_lz  楼主| 发表于 2015-11-5 18:45:41 | 显示全部楼层
Student stu = (Student) char_stu;
这句改成
Student stu = (Student) (char_stu - 2);
也是一样
34_avatar_middle
ico_lz  楼主| 发表于 2015-11-5 19:20:26 | 显示全部楼层
本帖最后由 Smoke 于 2015-11-5 19:46 编辑
  1.                 cout << (LPCTSTR)strHello << endl;
  2.                 cout << sizeof(char) << endl;
  3.                 char *char_stu = new char[3];
  4.                 *char_stu = 2;
  5.                 char_stu++;
  6.                 *char_stu = 3;
  7.                 char_stu++;
  8.                 *char_stu = 4;
  9.                
  10.                 LPStudent stu = (LPStudent) (char_stu - 2);
  11.                 cout << (int)stu->a << endl;
  12.                 cout << (int)stu->b << endl;
  13.                 cout << (int)stu->c << endl;
  14.                
复制代码

最后改成这样好使了
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-5-24 14:02

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表