struct多种声明定义写法的小结

详细讲解struct这个容易混淆的写法的书是有的,《C专家编程》中就有详细的描述。可惜大家喜欢问问题有甚于喜欢看书,于是BBS上泛滥着前人早已经解决、说明清楚的问题。哎,中国勤学好问者的悲哀。这里简要说明一下struct,为大家省钱。

/* struct.c
*  本程序演示了struct的种种写法。注意,所有这些写法都能编译通过
*  author: smileonce
*  date  : 2005-01-14
*/

// 这种写法是最要命的,但是它却可以通过, 最后面那个foo是结构体的实例
struct foo
{
    int foo;
} foo;

// 有了typedef,意义明显与上面不同,注意的是struct后面那个标签可以不写,最后面那个bar是匿名结构体的别名
typedef struct 
{
    int bar;
} bar;

// 这种写法是最没人用的,因为它的定义是一次性的,struct1是一个匿名struct的实例
struct 
{
    int aaa;
} mystruct1;

//最常用的写法,清晰不言自明,my_struct_tag是结构体标签,my_struct_type是struct my_struct_tag的别名
typedef struct my_struct_tag
{
    int aaa;
} my_struct_type;

// 下面两种定义的写法都可以,当然使用typedef定义的写法更简洁些
my_struct_type mystruct2;             //通过typedef定义的结构别名来定义变量
struct my_struct_tag mystruct3;       //通过结构标签定义变量


int main(int argc, char *argv[])
{
 return 0;
}

 

转载于:https://www.cnblogs.com/lishuai0214/p/4199564.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 结构体定义 typedef struct 是一种定义结构体类型的方式,它可以简化结构体类型的使用。使用 typedef struct 可以将结构体类型定义为一个新的类型名,方便在程序中使用。 使用 typedef struct 的语法格式为: typedef struct { // 结构体成员 } 结构体类型名; 其中,结构体成员可以包含各种数据类型,如 int、float、char 等,也可以包含其他结构体类型。 使用 typedef struct 定义结构体类型后,可以直接使用结构体类型名来定义结构体变量,如: 结构体类型名 变量名; 使用结构体变量时,可以通过点号(.)来访问结构体成员,如: 变量名.成员名; 总之,typedef struct 是一种方便定义结构体类型的方式,可以简化程序的编写和阅读。 ### 回答2: 结构体是C语言中用来封装不同数据类型的一种数据结构。为了方便使用结构体,C语言提供了typedef关键字,可以通过定义一个新的类型来简化结构体的使用。具体而言,使用typedef可以将结构体类型定义为一个新的名称,用来代替结构体类型的名字。 typedef struct的基本语法如下: typedef struct 结构体类型名{ //结构体成员变量 }新类型名; 其中,结构体类型名表示定义的结构体类型的名称,新类型名表示为该结构体类型定义的新名称。 结构体中的成员变量可以是任何C语言的数据类型,包括基本数据类型、指针类型等。结构体成员变量定义的方式和普通变量定义方式相同,在结构体内部使用逗号隔开,每个变量名之前可以加上数据类型和修饰符。 使用typedef定义结构体类型有许多好处,如: 1. 简化使用:通过给结构体类型定义一个新名称,可以让结构体类型的使用变得更加简单和方便。 2. 提高可读性:使用新名称定义结构体类型可以提高程序的可读性和代码的可维护性。 3. 方便调用:定义新名称之后,可以直接使用新名称来调用结构体类型,不必再使用原始的结构体类型名称。 4. 隐藏细节:使用typedef让结构体类型的定义和使用更为简单,同时也能够隐藏实现细节,更好地保护程序的安全性。 在实际编程中,typedef结构体类型常用来定义函数返回值类型或函数参数类型。在多人协同开发的项目中,定义好的typedef结构体类型能够为团队中的其他成员提供便利,提高代码的复用率和可维护性。 ### 回答3: 结构体是C语言中非常重要的一个概念,它是由若干个不同的数据类型组成的复合数据类型,可以包含不同类型的数据,可以同时作为函数参数和返回值,从而大大增强了程序的灵活性和可读性。在C语言中,我们使用结构体定义定义一个结构体类型,通常会使用typedef struct语法来定义。 下面我们来详细讲解结构体定义typedef struct的用法,以及它的使用小结。 1. typedef struct的基本语法 typedef struct 结构体名称{ 数据类型 变量名1; 数据类型 变量名2; …… } 结构体别名; 其中,数据类型可以是任何基本数据类型或自定义的数据类型,变量名可以自定义命名。结构体别名是我们为该结构体类型定义的一个新的别名,用于后续的代码中直接使用。 2. 使用typedef struct的例子 下面是定义一个学生结构体类型,其中包含学生的姓名、性别、年龄和成绩: typedef struct { char name[20]; char sex[10]; int age; float score; } Student; 在使用这个结构体类型时,我们可以直接使用Student作为该类型的别名,如下: void printStudent(Student stu) { printf("name=%s, sex=%s, age=%d, score=%.2f\n", stu.name, stu.sex, stu.age, stu.score); } 在上面的函数中,我们使用了Student类型作为函数的参数,直接传入一个结构体类型的参数,而不需要再次定义结构体类型。 3. typedef struct的使用小结 使用typedef struct可以将结构体类型定义为一个新的类型别名,可以方便地在不同的函数之间传递结构体类型的参数,从而可以大大简化代码,并提高程序的可读性。特别是在处理复杂的数据类型时,typedef struct可以让代码更加清晰明了,容易管理和维护。 总之,typedef struct是C语言中常用的结构体定义语法,它可以使得代码更加清晰明了,易于维护和扩展。熟练掌握该语法,并灵活运用,是每一位C语言程序员必备的技能之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值