请教一个指针数组的问题
typedef unsigned char BYTE;
typedef struct
{
BYTE *memberstr;
}struct1;
typedef struct
{
struct1 *(*grp)[];
}struct2;
struct1 member1=
{
"member1str "
};
struct1 *Group[]=
{
&member1,
};
struct2 example1[]=
{
Group,
};
void main(void)
{
printf( "ex=%s\n ",(*example1[0].grp[0])-> memberstr);
return;
}
请问一下,该printf是否能输出我所要求的 "menber1str "字符串?
[解决办法]
我的天啊,没见过这么赋值的啊。
[解决办法]
帮你改了一下。最好不要在程序里写这样的代码,好混乱
#include <stdio.h>
typedef const char BYTE;
typedef struct
{
BYTE *memberstr;
}struct1;
typedef struct
{
struct1 **grp;
}struct2;
struct1 member1=
{
"member1str "
};
struct1 *Group[]=
{
&member1,
};
struct2 example1[]=
{
Group,
};
int main(void)
{
printf( "ex=%s\n ",example1[0].grp[0]-> memberstr);
return 0;
}
[解决办法]
#include <stdio.h>
#include <stdlib.h>
typedef unsigned char BYTE;
typedef struct
{
char *memberstr;
}struct1;
typedef struct
{
struct1 *(*grp)[1];
}struct2;
struct1 member1=
{
"member1str "
};
struct1 *Group[]=
{
&member1
};
struct2 example1 = {&Group};
int main(void)
{
printf( "ex=%s\n ",(example1.grp)[0][0]-> memberstr);
return 0;
}
[解决办法]
这种代码少写,可读性太差
[解决办法]
如果按下面这样声明
struct1 *(*grp)[];
表示grp是一个指针,这个指针指向一个指针数组struct1* []
也就表示grp是一个三维指针啦
[解决办法]
但是struct1 *(*grp)[]后面[]没有指定大小啊