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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© onefiter 中级黑马   /  2014-11-26 08:39  /  1287 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. // b是test函数的形参(形式参数)
  2. void test(int b[]) { // 也可以写int b[3]
  3.     b[0] = 9;
  4. }

  5. int main()
  6. {
  7.     int a[3];
  8.     a[0] = 10;
  9.    
  10.     printf("函数调用前的a[0]:%d\n", a[0]);
  11.    
  12.     test(a); // a是test函数的实参(实际参数)

  13.     printf("函数调用后的a[0]:%d", a[0]);
  14.     return 0;
  15. }
复制代码

15114042-a2f9aeea8e7b44d989a3b5f4bdef2d35.png (5.81 KB, 下载次数: 5)

15114042-a2f9aeea8e7b44d989a3b5f4bdef2d35.png

8 个回复

倒序浏览
第二个a[0]:9 不太明白,请大神指教一下
回复 使用道具 举报
test(a);参数是数组名字,数组名字其实是数组的首地址,这是引用传递,不是值得传递  a指向了第一个元素为9的数组的首地址
回复 使用道具 举报
楼主多学习一下值类型和引用类型就明白了
回复 使用道具 举报
调用函数时传递的是地址,修改的就是原数组,b[0]和a[0]指向的是同一个元素,b[0]=9;所以a[0]=9
回复 使用道具 举报
参数是数组名字,数组名字其实是数组的首地址
回复 使用道具 举报
HM_lpn 发表于 2014-11-26 09:00
test(a);参数是数组名字,数组名字其实是数组的首地址,这是引用传递,不是值得传递  a指向了第一个元素为9 ...

嗯,谢谢指导
回复 使用道具 举报
依米阳光 发表于 2014-11-26 09:21
楼主多学习一下值类型和引用类型就明白了

嗯,好,会多多学习的
回复 使用道具 举报
HM_lpn 发表于 2014-11-26 09:00
test(a);参数是数组名字,数组名字其实是数组的首地址,这是引用传递,不是值得传递  a指向了第一个元素为9 ...

谢谢指导,恍然大悟:lol
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马