首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问:结构体成员指针下面哪种方法正确

2012-03-28 
请教:结构体成员指针下面哪种方法正确?typedefstruct{UCHAR*dataContentULONGcolor}bitmap如果让bitmap

请教:结构体成员指针下面哪种方法正确?
typedef   struct   {

                UCHAR       *dataContent;
                ULONG       color;
                              }bitmap;

    如果让   bitmap.dataContent   指向FirstBMP所在的内存地址,

    下面哪种写法正确啊?
      为什么?
 

1.                   bitmap.dataContent=&FirstBMP;(这种方式我觉得正确,可好像不对)

2.                   bitmap.dataContent=(UCHAR   *)&FirstBMP;

请教:

[解决办法]
1. bitmap.dataContent=&FirstBMP;(这种方式我觉得正确,可好像不对)

2. bitmap.dataContent=(UCHAR *)&FirstBMP;

按你的问题 FirstBmp可能是个bitmap,所以要用(UCHAR *)&FirstBMP强制转换
要想用第一种方法,就要修改结构了
typedef struct
{
bitmap* dataContent; //定义dataContent为bitmap*
ULONG color;
}bitmap;


[解决办法]
你这么写是不行的吧
typedef struct
{
bitmap* dataContent; //定义dataContent为bitmap*
ULONG color;
}bitmap;

可以写成
typedef struct
{
void* dataContent;
ULONG color;
}bitmap;
或者
typedef struct BMP
{
struct BMP* dataContent;
ULONG color;
}bitmap;

[解决办法]
o 没看完

(UCHAR *)是强制类型转换, 把这个结构体转换成 (UCHAR *)
虽然可以通过, 程序很可能要出错

按你的意思, 应该是

bitmap.dataContent=FirstBMP.c

[解决办法]
SettingMenu的地址跟他第一个成员的地址是一样的
所以(UCHAR *)&SettingMenu = SettingMenu.dataContent;

我个人不推荐用这种写法(简写),让程序很难懂
[解决办法]
因为:SetupMenu_BG[1].dataContent 是 UCHAR *类型,
而 &SettingMenu 是 FirstBMP * 类型,
显然不能直接:SetupMenu_BG[1].dataContent = &SettingMenu;

所以需要一个类型转换:
SetupMenu_BG[1].dataContent=(UCHAR *)&SettingMenu;
datacontent 存放的是一个变量数组的起始地址。

热点排行
Bad Request.