结构体指针作为函数参数
结构体指针变量用于存放结构体变量的首地址,将结构体指针作为函数参数传递时,其实就是传递结构体变量的首地址,在被调函数中改变结构体变量成员的值,那么主调函数中结构体变量成员的值也会被改变。
接下来通过一个案例演示结构体指针作为函数参数的调用,具体如例1所示。
例1 demo3.c
1 #include <stdio.h>
2 struct Student
3 {
4 char name[50];
5 int studentID;
6 };
7 void change(struct Student* stu)
8 {
9 strcpy(stu->name, "lisi");
10 stu->studentID = 2;
11 }
12 int main()
13 {
14 struct Student student = { "Zhang San", 1 };
15 change(&student);
16 printf("name = %s studentID = %d\n", student.name, student.studentID);
17 return 0;
18 }
例1运行结果如图1所示。
图1 例1运行结果
在例1中,第2~6行代码定义了struct Student结构体类型。第7~11行代码定义了change()函数,该函数接受struct Student结构体类型的指针变量作为参数,在函数内部,通过指针修改结构体变量成员值。在第12~18行的main()函数中,第14行代码定义struct Student结构体变量student并初始化。第15行代码调用change()函数,取student变量的地址作为其参数。第16行代码输出struct Student结构体变量的成员值。由图1可知,调用change()函数之后,struct Student结构体变量的成员值被修改了。