结构体的三种定义方法、结构体类型名(可选标志符)什么时候可以省略

您所在的位置:网站首页 c语言中定义结构体的关键字 结构体的三种定义方法、结构体类型名(可选标志符)什么时候可以省略

结构体的三种定义方法、结构体类型名(可选标志符)什么时候可以省略

2024-07-09 03:21| 来源: 网络整理| 查看: 265

结构体的三种定义方法 一、单独定义:

  先定义结构体类型,再定义变量   定义结构体的格式如下:    struct 结构体名 {    若干数据项;    } ;   其中,struct为关键字; 结构体名是用户定义的类型标识。 { }中是组成该结构体的成员。成员的数据类型可以是C语言所允许的任何数据类型。 采用这种方式定义的结构体,创建变量的格式为:    struct 结构体名(也就是可选标记符) 结构体变量名 ;    例如

struct student{ int age; string name; }; struct student s1,s2; 二、混合定义

   struct 结构体名 {    若干数据项;    } 结构体变量名 ;   定义结构体类型时,同时定义结构变量   其中,struct为关键字; 结构体名是用户定义的类型标识。 { }中是组成该结构体的成员。成员的数据类型可以是C语言所允许的任何数据类型,结构体变量名 为该结构体定义变量名称(用户自定义)。   不难看出,相比于第1种形式,只是将“结构体变量”附加在大括号后面进行定义,省略了“struct 结构体名 结构体变量名 ;”这条语句,其余本质相同。   例如

struct student{ int age; string name; }s1,s2; 其中,s1,s2是变量 三、无类型名定义

   struct {    若干数据项;    } 结构体变量名 ;   相比于第2种形式,只是去掉了“结构体名”,其余本质相同。

struct { int age; string name; }s1; 总结

   不难看出,形式1、形式2、形式3的主要区别体现在“有无结构体名”、“变量的定义位置”不同。   第1种形式为“一般形式”,应熟悉掌握。    形式2相比于形式1——只是 将“结构体变量”附加在大括号后面进行定义,省略了“struct 结构体名 结构体变量名 ;”这条语句,其余本质相同。    形式3相比于形式2——只是 去掉了“结构体名” ,其余本质相同。   因此,掌握了“形式1”,稍作变动即可得到形式2和形式3。

可选标志符(类型名)什么时候可以省 其一; struct { char title[MAXTITL]; char author[MAXAUTL]; float value; }library;

//注意这里不再是定义声明结构体类型,而是直接创建结构体变量了,这个编译器会分配内存的; //这样的确可以省略标识符也就是结构体名,但是只能使用一次;因为这是;声明结构体的过程和定义结构体变量的过程和在了一起;并且个成员变量没有初始化的; //如果你想多次使用一个结构体模块,这样子是行不通的; 这种方式不能指明结构体类型名而是直接定义结构体变量,并且在值定义一次结构体变量时适用,无结构体名的结构体类型是无法重复使用的。 也就是说,后面程序不能再定义此类型变量了,除非再写一次重复的struct。

其二;

用typedef定义新类型名来代替已有类型名,即给已有类型重新命名; 一般格式为;typedef 已有类型 新类型名;

typedef int Elem; typedef struct{ int date; ..... ..... }STUDENT; STUDENT stu1,stu2;

在这里插入图片描述 可参考文章: https://zhuanlan.zhihu.com/p/520770506?utm_id=0



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3