简单的C语言结构问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 20:27:59
struct node
{char a[3][15];
int b;};
typedef struct node AA;
void AA gz()
{AA *p;
int i;
p->a[0]="zhuziliang";
p->a[1]="mao";
p->a[2]="aer";
for(i=0;i<3;i++)
p->a[i];}
void AA sh()
{AA boy[3];
int i;
boy[0].b=90;
boy[1].b=80;
boy[2].b=70;
for(i=0;i<3;i++)
printf("%d",boy[i].b);}

main()
{gz();
int j;
printf("1 name");
printf("2 fenshu");
scanf("%d",&j);
switch(j)
case 1: gz();break;
case 2: sh();break;}
到底错在那里了~~为什么错误 noname.c 10: 结构体或数组的大小未知;
错误 noname.c 10: 重定义'AA'错误 noname.c 10: 说明语法错误
请大家改一下;

修改如下,去掉的地方,我加了注释

#include<stdio.h>
#include<string.h>
struct node
{
char a[3][15];
int b;
};
typedef struct node AA; //定义了类型为AA

//void AA gz()//前面有void关键字,编译器AA当成函数名了,它与前面定义的类型AA重复了
void gz()
{
AA girl[3],*p=girl; //p没有初始化过,不能进行下面的p->的操作

int i;
//p->a[0]="zhuziliang"; //字符串不能直接用=赋值,需要用strcpy
//p->a[1]="mao"; //同上
//p->a[2]="aer"; //同上
strcpy(p->a[0],"zhuziliang");
strcpy(p->a[1],"mao");
strcpy(p->a[2],"aer");
for(i=0;i<3;i++)
//p->a[i];//这句代码无效
printf("%s",p->a[i]);
}

//void AA sh() //前面有void关键字,编译器AA当成函数名了,它与前面定义的类型AA重复了
void sh()
{
AA boy[3];
int i;
boy[0].b=90;
boy[1].b=80;
boy[2].b=70;
for(i=0;i<3;i++)
printf("%d",boy[i].b);
}

main() <