二维结构数组的问题
我想定义一个二维数组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;
...
[解决办法]
//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