0%

C语言 访问struct的方式

C语言的结构体访问方式

本学期来了一个新学生,名字叫魏华,在上一个程序的基础上,我们使用指向结构的指针来访问试试看。

先看代码:

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/struct4.c*/
#include <stdio.h>

int main()
{

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

struct Student lilei = {1, "Li Lei", 18, "male"};
struct Student hanmeimei = {2, "Han Meimei", 17, "female"};
struct Student weihua1 = {3, "Wei Hua", 18, "male"};
struct 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;
}

可以看到与上一个程序的区别就是如下的代码段:

1
2
3
4
5
struct Student weihua1 = {3, "Wei Hua", 18, "male"};
struct Student *weihua = &weihua1;

printf("%d \t | %s \t| %d \t| %s \n", weihua->id, weihua->name, weihua->age, weihua->sex);

这里说一下另立独行,希望引起注意的魏华同学,先定义了weihua1这个结构体,然后定义了一个执行该结构的指针,你应该还记得&是什么意思,对的,是取指针地址的意思。

另外需要注意的是,在原来定义结构体变量的时候,访问方式为.,但是在更改为指针后,访问方式为->

这个记住就好了,如果不记得,在编译的时候看一下报错信息。

编译运行

直接输入make就可以了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#beginner/struct/Makefile
ALL : struct1 struct2 struct3 struct4

struct1: struct1.c
gcc -o struct1 struct1.c

struct2: struct2.c
gcc -o struct2 struct2.c

struct3: struct3.c
gcc -o struct3 struct3.c

struct4: struct4.c
gcc -o struct4 struct4.c

.PHONY : clean

clean:
rm -f struct1 struct2 struct3 struct4

运行输出如下:

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

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