《结构体》课件中的
八、结构体作为函数参数
将结构体变量作为函数参数进行传递时,其实传递的是全部成员的值,也就是将实参中成员的值一一赋值给对应的形参成员。因此,形参的改变不会影响到实参。
- #include <stdio.h>
- int main(int argc, const char * argv[]) {
- // 定义一个结构体类型
- struct Student {
- char *name;
- int age;
- };
-
- // 定义一个结构体变量
- struct Student stu = {"MJ", 27};
-
- // 定义一个指向结构体的指针变量
- struct Student *p;
-
- // 指向结构体变量stu
- p = &stu;
- /*
- 这时候可以用3种方式访问结构体的成员
- */
- // 方式1:结构体变量名.成员名
- printf("name=%s, age = %d \n", stu.name, stu.age);
-
- // 方式2:(*指针变量名).成员名
- printf("name=%s, age = %d \n", (*p).name, (*p).age);
-
- // 方式3:指针变量名->成员名
- printf("name=%s, age = %d \n", p->name, p->age);
-
- return 0;
- }
复制代码
* 首先在第4行定义了一个结构体类型Student * 在第18行定义了一个结构体变量stu,并在第22行将其作为实参传入到test函数 输出结果为: 修改前的实参:30 修改前的行参:30 修改后的行参:10 修改后的实参:30
形参是改变了,但是实参一直没有变过 ---------------------------------- 问题 ---------------------------------- 不明白明明在test函数中改变了参数的值stu.age = 10,为什么后面又说它的值没变? 是所有函数都是这样的吗?
|