学科分类
目录
C语言

结构体变量作为函数参数

结构体变量作为函数参数的用法与普通变量类似,都需要保证调用函数的实参类型和被调用函数的形参类型相同。结构体变量作为函数参数时,也是值传递,被调函数中改变结构体成员变量的值,主调函数中的结构体变量不受影响。

下面通过一个案例演示结构体变量作为函数参数调用,如例1所示。

例1 demo1.c

 1  #include <stdio.h>
 2  struct Student           //定义struct Student结构体类型
 3  {
 4    char name[50];
 5    int studentID;
 6  };
 7  void change(struct Student stu)    //struct Student结构体变量作为函数参数
 8  {
 9    strcpy(stu.name, "lisi");   //改变结构体变量的值
 10   stu.studentID = 2;
 11   printf("change()函数:");
 12   printf("name = %s studentID = %d\n", stu.name, stu.studentID);
 13 }
 14 int main() 
 15  {
 16   struct Student student = { "Zhang San", 1 };  //定义结构体变量student
 17   change(student);        //调用change()函数,student变量作为参数
 18   printf("main()函数:");
 19   printf("name = %s studentID = %d\n", student.name, student.studentID);
 20   return 0;
 21  }

例1运行结果如图1所示。

图1 例1运行结果

在例1中,第2~6行代码定义了struct Student结构体类型,它有name和studentID两个成员。第7~13行代码定义了change()函数,该函数以struct Student结构体变量作为形式参数,在change()函数内部,改变结构体变量成员的值,并输出结构体变量的成员值。在第14~21行的main()函数中,第16行代码定义了struct Student结构体变量student并初始化。第17行代码调用change()函数并将student作为参数。第18~19行代码打印输出struct Student结构体变量student的成员值。由图1可知,change()函数改变了结构体变量student中的成员值,但main()函数中的结构体变量student的成员值没有受到影响。

点击此处
隐藏目录