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

请问一个指针数组的有关问题

2012-02-07 
请教一个指针数组的问题typedefunsignedcharBYTEtypedefstruct{BYTE*memberstr}struct1typedefstruct{s

请教一个指针数组的问题
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)[]后面[]没有指定大小啊

热点排行