读书人

二维结构数组的有关问题

发布时间: 2012-03-22 17:43:57 作者: rapoo

二维结构数组的问题
我想定义一个二维数组176*144,每个元素是一个结构 struct rgbst
以下的定义和动态分配空间对吗?怎么我编译显示`g_rgb565save' undeclared

struct rbgst{
unsigned short rgb565save;
int xpos;
int ypos;
}Info;

Info** g_rgb565save=(Info**)malloc(sizeof(Info*)*144);
for(int k=0;k<144;k++)
g_rgb565save = (Info*)malloc(sizeof(Info)*176);

[解决办法]
错了,在你的代码中“Info”是rbgst结构体的一个实例对象,而rbgst才是结构体名。你用Info** g_rgb565save来定义不对,应该是rbgst** g_rgb565save。
[解决办法]
换个名字好不?
typedef struct rbgst{
unsigned short rgb565save;
int xpos;
int ypos;
}Info;
[解决办法]
楼上说的对,你的定义使得Info是结构体的一个变量了,而不是类型。看后面的代码,似乎是希望Info是结构体类型。
可以用typedef让Info也表示结构体类型:
typedef struct rbgst{
unsigned short rgb565save;
int xpos;
int ypos;
}Info;
...
[解决办法]

C/C++ code
//The right define is below:typedef struct   rbgst{     unsigned   short   rgb565save;     int   xpos;     int   ypos; }Info;Info**  g_rgb565save=(Info**)malloc(sizeof(Info*)*144); for(int   k=0;k <144;k++)     g_rgb565save[k]   =   (Info*)malloc(sizeof(Info)*176);//or in C/C++struct   rbgst{     unsigned   short   rgb565save;     int   xpos;     int   ypos; };struct   rbgst **  g_rgb565save=(struct   rbgst**)malloc(sizeof(struct   rbgst*)*144); for(int   k=0;k <144;k++)     g_rgb565save[k]   =   (struct   rbgst*)malloc(sizeof(struct   rbgst)*176);//or in C++struct   rbgst{     unsigned   short   rgb565save;     int   xpos;     int   ypos; };rbgst **  g_rgb565save=(rbgst**)malloc(sizeof(rbgst*)*144); for(int   k=0;k <144;k++)     g_rgb565save[k]   =   (rbgst*)malloc(sizeof(rbgst)*176);
[解决办法]
struct 前面加个typedef 或者是

struct rbgst **g_rgb565save

读书人网 >C语言

热点推荐