对于结构体定义可以直接定义为struct abc{........};或者 struct abc{

对于结构体定义可以直接定义为struct abc{........};或者 struct abc{........}ABC;或者 struct {........}ABC;可 可以吗?而不用 typedef struct abc{........};或者 typedef struct abc{........}Abc;这种形式?(是针对考研数据结构。)但是这两种定义形式都是对的是吧?最好能详细讲一下define,struct, typedef,以及结构体指针,谢谢了!

定义一个结构体的方式:struct abc {};
用这种方式要定义一个变量是:struct abc a1;
struct abc {}ABC;这种定义方式跟上面的方式是一样的。只是定义的时候顺便生成一个结构体变量ABC。也就是前面两步写成了一步。
typedef struct abc{........}Abc;//这种定义其实是为了少写一写东西,类似于别名的意思。

比如本来要定义一个结构体变量。你应该这样struct abc AA;但是用了typedef的语句之后,定义一个结构体变量就可以这样定义,Abc AA。追问

详细一点 ,举个具体点的例子吧?

追答

方法一:传统方法
struct Student{
char *name;

int num;
}; //定义一个结构体
int main(void)
{
struct Student stu1 //定义一个结构体变量
stu1.name="Jack";
stu1.num=12;
return 0;

}

方法二:
struct Student{
char *name;

int num;
}stu2; //定义一个结构体,定义一个结构体变量stu2
int main(void)
{
stu2.name="Ken";
stu2.num=13;
return 0;

}

方法三:
typedef struct Student{
char *name;

int num;
}stu; //用stu代替struct Student 来进行结构体变量的类型声明。
int main(void)
{
stu stu3

stu3.name="Lucy";
stu3.num=14;
return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-31
都可以定义结构,typedef struct abc{}后面要带结构类型名,如果前面没有typedef的话,结构体后面好像不能定义结构类型名称,只能用BODY前面那个abc来定义结构体变量
第2个回答  2021-01-18

struct:一种构造数据类型

相似回答