码迷,mamicode.com
首页 > 编程语言 > 详细

c/c++ 参数传递 - 数组

时间:2016-05-14 13:55:11      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

 对于函数参数中的数组类型:传递的是数组地址,可以理解成传递的是对数组的引用。不是值传递,这是由C/C++函数实现机制决定的。
一下三种函数生命完全等价:
  void func(int array[10])
  void func(int array[])
  void func(int *array)

测试代码如下:

struct node{
    int val;
};

void func0(node n){
    n.val =  1000;
}

void func1(node n[2]){
    n[0].val = 1111;
}

void func2(int a[2])
{
    int t = a[0];
    a[0] = a[1];
    a[1] = t;
}

    node n0;n0.val = 0;
    func0(n0);
    cout<<n0.val<<endl;//nothing changed

    node n[2];
    n[0].val = 0;
    n[1].val = 0;
    func1(n);
    cout<<n[0].val<<endl;//changed
int a[2]; a[0] = 0;a[1] = 1; func2(a); cout<<a[0]<<" "<<a[1]<<endl;//changed

结果发现:不论是结构体数组,还是整形数组,只要是数组,就是引用传递。并且会造成值的修改。

 

c/c++ 参数传递 - 数组

标签:

原文地址:http://www.cnblogs.com/luntai/p/5492334.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!