zoukankan      html  css  js  c++  java
  • c/c++ 参数传递

     对于函数参数中的数组类型:传递的是数组地址,可以理解成传递的是对数组的引用。不是值传递,这是由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

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

  • 相关阅读:
    触发器(2)
    触发器
    GZipStream
    MemoryStream类读写内存
    ashx一般处理程序
    Redmin 一键安装
    Unity3D和网页数据交互的基本原理
    apk MIME类型
    [leetcode]Valid Sudoku
    [leetcode]Search in Rotated Sorted Array
  • 原文地址:https://www.cnblogs.com/luntai/p/5492334.html
Copyright © 2011-2022 走看看