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

栏目: C++ · 发布时间: 5年前

内容简介:c++ 的形参 大致可以分三种 ,传值 ,传指针 传 引用,传值 ,不改变原来函数外变量的值,原来是几 还是几,只是copy 了一个副本,副本在变而已传指针,等于把 原来函数外 变量的内存地址传进来了,那么你操作的其实是对应地址上的数据, 那么你的任何操作 都会影响函数外相应变量的值,并改变他

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 屁就是个屁 手动狗头 【 对语言要有包容性】


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Java语言程序设计

Java语言程序设计

(美) Y. Daniel Liang / 李娜 / 机械工业出版社 / 2011-6 / 79.00元

本书是Java语言的经典教材,畅销多年不衰。本书全面整合了Java的特性,采用“先讲基础”的教学方式,循序渐进地介绍了程序设计基础、面向对象程序设计、GUI程序设计等。另外,本书还全面且深入地覆盖了一些高级主题,包括算法和数据结构、并发、网络、国际化、高级GUI、数据库和Web程序设计等。 本书中文版由《Java语言程序设计 基础篇》和《Java语言程序设计 进阶篇》组成。基础篇对应原书的第......一起来看看 《Java语言程序设计》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码