请教:结构体成员指针下面哪种方法正确?
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 存放的是一个变量数组的起始地址。