美文网首页
一起来了解一下 c++的三种函数形参传递

一起来了解一下 c++的三种函数形参传递

作者: Helen_Cat | 来源:发表于2018-11-20 12:06 被阅读10次

    c++ 的形参 大致可以分三种 ,传值 ,传指针 传 引用,

    传值 ,不改变原来函数外变量的值,原来是几 还是几,只是copy 了一个副本,副本在变而已
    传指针,等于把 原来函数外 变量的内存地址传进来了,那么你操作的其实是对应地址上的数据, 那么你的任何操作 都会影响函数外相应变量的值,并改变他

    传引用 ,其实和指针类似,虽然传的不是地址,但是你对函数外的变量操作完了,回头总会跟人家说,我把你强奸了,你要有点响应。

    另外比较特殊的就是 数组,c++ 形参可以是数组,但是返回值 不可以是数组,
    另外是全局静态变量,你对他做了操作 ,传值的话 ,人家不变,传指针 传引用 他就会变 ,

    需要注意的是
    你的 函数 形参 声明的是值 ,比如 int a , 调用的时候 就传 int a 类型的a 数据
    你的函数 形参 声明的是引用 ,比如是 int &a, 调用的时候 传 int a 的a数据
    你的函数 形参声明的是 指针 ,比如 是 int *a ,调用的时候 传 int a 的 &a

    函数形参 有数组 ,数组作为形参有三种表示方法

    void myFunction(int *param)
    void myFunction(int param[10])
    void myFunction(int param[])
    

    如果 函数 返回值是指针,则 函数名前缀要有 [*]
    表明返回的是 数组指针,同时 你在接收函数返回值的时候也必须使用 相应的指针类型

    以下代码 带领大家练习 几种函数形参的传递

    
    #include <iostream>
    
    using  namespace std;
    
    static  int start=5;
    
    int  sub(int a,int  &b){
        b=b*2;
        auto c=a-b;
        return c ;
    
    }
    
    int mulple(int *k,int *z){
        *k=*k+3;
        *z=*z *2;
    
        int res= *k * *z;
        cout<<res<<endl;
        cout<<*z<<endl;
        cout <<*k<<endl;
    
        return res;
    }
    
    int  addz(int & x ,int &y){
        x=x*2;
        y=y+4;
        int  c=x+y;
        cout<<c<<endl;
        return c;
    
    }
    
    int * arrz(int *arr,int n){
        for(int i=0;i<n;i++){
            arr[i]=arr[i]+5;
            start--;
        }
    
        return arr;
    }
    
    int main() {
        std::cout << "Hello, World!" << std::endl;
        int x=4,y=60;
         int suz=sub(x,start);
         cout<<suz<<endl;
         cout<<start<<endl;
    //    int result=addz(x,y);
    //    cout<<x<<endl;
    ////    cout<<result<<endl;
    //    cout<<y<<endl;
    //    int rez=mulple(&x,&y);
        int arrp[]={2,45,67,12};
    
        int *rezs=arrz(arrp,4);
        for (int k=0;k<4;k++){
            cout<<arrp[k]<<endl;
        }
        cout<<start<<endl;
    //    cout<<rez<<endl;
    }
    
    

    俱往昔 从大学加入计算机学院的那一刻,到现在工作中来
    语言的更迭,令人嘘吁
    看了看自己的学习和使用历程
    c ---> c++ ---> java ---> c# ---> nodejs ---> java ---> R ---> scala ---> shell ---> python ---> grovvy---> lua ---> kotlin---> swift ---> golang ---> c++
    从开始又回到了 c++
    大丈夫横刀立马,唯有 C++
    认为 非常优秀的只有 c++ java c#
    很优秀 很不错的 golang scala python
    使用起来很顺手的 kotlin swift nodejs grovvy
    心中最敬仰的 C shell
    短小精悍的 R lua python shell
    始终 不忍直视的 php 屁就是个屁 手动狗头 【 对语言要有包容性】

    相关文章

      网友评论

          本文标题:一起来了解一下 c++的三种函数形参传递

          本文链接:https://www.haomeiwen.com/subject/kfvtqqtx.html