A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dawei233 中级黑马   /  2014-7-22 21:00  /  1349 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

《结构体》课件中的

八、结构体作为函数参数
将结构体变量作为函数参数进行传递时,其实传递的是全部成员的值,也就是将实参中成员的值一一赋值给对应的形参成员。因此,形参的改变不会影响到实参。
  1. #include <stdio.h>

  2. int main(int argc, const char * argv[]) {
  3.     // 定义一个结构体类型
  4.     struct Student {
  5.         char *name;
  6.         int age;
  7.     };
  8.    
  9.     // 定义一个结构体变量
  10.     struct Student stu = {"MJ", 27};
  11.    
  12.     // 定义一个指向结构体的指针变量
  13.     struct Student *p;
  14.    
  15.     // 指向结构体变量stu
  16.     p = &stu;

  17.     /*
  18.      这时候可以用3种方式访问结构体的成员
  19.      */
  20.     // 方式1:结构体变量名.成员名
  21.     printf("name=%s, age = %d \n", stu.name, stu.age);
  22.    
  23.     // 方式2:(*指针变量名).成员名
  24.     printf("name=%s, age = %d \n", (*p).name, (*p).age);
  25.    
  26.     // 方式3:指针变量名->成员名
  27.     printf("name=%s, age = %d \n", p->name, p->age);
  28.    
  29.     return 0;
  30. }
复制代码

* 首先在第4行定义了一个结构体类型Student
* 在第18行定义了一个结构体变量stu,并在第22行将其作为实参传入到test函数
输出结果为:
修改前的实参:30
修改前的行参:30
修改后的行参:10
修改后的实参:30

形参是改变了,但是实参一直没有变过
---------------------------------- 问题 ----------------------------------
不明白明明在test函数中改变了参数的值stu.age = 10,为什么后面又说它的值没变?
是所有函数都是这样的吗?

1 个回复

倒序浏览
完全看不明白 。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马