0%

C语言 简化struct的使用

C语言的结构体

前面说到了结构体的使用方法和访问方法。

这一次讲点高级的结构体用法。

从前面的说法可以看到每次初始的方法为:

1
2
3
4
5
6
7
8
9
struct Student
{
int id;
char name[15];
int age;
char sex[10];
};

struct Student lilei = {1, "Li Lei", 18, "male"};

是不是感觉很啰嗦,是的,每次都要使用struct关键字来新定义一个变量,程序员最有名的特点就是懒,所以这问题必须解决,这就是关键字typedef的妙用了。

typedef的作用就是用来创建新类型,看看用法:

1
2
3
4
5
6
7
8
9
typedef struct 
{
int id;
char name[15];
int age;
char sex[10];
}Student;

Student lilei = {1, "Li Lei", 18, "male"};

是的,只需要在struct前面加上typedef这个关键字,把tag移到结构体的最后,以后初始化的时候,只需要把Student当做一个变量类型就可以了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*beginner/struct/struct5.c*/
#include <stdio.h>

int main()
{

typedef struct
{
int id;
char name[15];
int age;
char sex[10];
} Student;

Student lilei = {1, "Li Lei", 18, "male"};
Student hanmeimei = {2, "Han Meimei", 17, "female"};
Student weihua1 = {3, "Wei Hua", 18, "male"};
Student *weihua = &weihua1;

printf("The student information :\n");
printf("ID \t | Name \t| Age\t| Sex \n");
printf("%d \t | %s \t| %d \t| %s \n", lilei.id, lilei.name, lilei.age, lilei.sex);
printf("%d \t | %s \t| %d \t| %s \n", hanmeimei.id, hanmeimei.name, hanmeimei.age, hanmeimei.sex);
printf("%d \t | %s \t| %d \t| %s \n", weihua->id, weihua->name, weihua->age, weihua->sex);

return 0;
}

编译运行

直接输入make就可以了。

1
gcc -o struct5 struct5.c

运行输出如下:

1
2
3
4
5
6
$  ./struct5
The student information :
ID | Name | Age | Sex
1 | Li Lei | 18 | male
2 | Han Meimei | 17 | female
3 | Wei Hua | 18 | male
处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道