zoukankan      html  css  js  c++  java
  • c++中数组作为形参时,传递的是值还是地址?

    c++中数组作为形参时,传递的是值还是地址?

    运行如下程序

    using namespace std;
    int a[100]={1,2,3,4,5,6,7,8,9};
    void cit( int b[100]){//将a的地址传给b,修改a相当于修改b 
    	b[1]=1113;//这里其实修改的是a[1]; 
    	cout<<b[1]<<endl;
    }
    int main(){
    	
    	cout<<a[1]<<endl;//输出数组的第一个元素 
    	cout<<a<<endl;//输出数组的地址 
    	//char d='A';
    	cit(a);
    	cout<<a[1];
    	return 0; 
    }
    

      

     运行结果:

    1.说明:数组作为形参时,传递的是地址

    在函数中修改数组就相当于修改了原数组。

    注意:函数还可以这样写

    void cit( int b[]){//将a的地址传给b,修改a相当于修改b 
    	b[1]=1113;//这里其实修改的是a[1]; 
    	cout<<b[1]<<endl;
    }

    传递时,相等于把数组的首地址传过去了,这样可以不设定数组元素的个数。

    如果想传递数组元素的个数,可以这样写数组

    void cit( int b[],int n){//将a的地址传给b,修改a相当于修改b 
    	b[1]=1113;//这里其实修改的是a[1]; 
    	cout<<b[1]<<endl;
    }
    

     调用 cit(a,8)

    2.你猜如果调用cit(a+4,4)会把数组的那个地址传过去呢? 

    对,第5个元素a[4]的地址

    using namespace std;
    int a[100]={1,2,3,4,5,6,7,8,9};
    void cit( int b[],int n){//将a的地址传给b,修改a相当于修改b 
    	b[1]=1113;//这里其实修改的是a[5],因为b[0]对应的是a[4]; 
    	cout<<b[1]<<endl;
    }
    int main(){
    	
    	cout<<a[1]<<endl;//输出数组的第一个元素 
    	cout<<a<<endl;//输出数组的地址 
    	//char d='A';
    	cit(a+4,4);
    	cout<<a[1]<<endl;
    	cout<<a[5]<<endl;
    	return 0; 
    }
    

      输出结果如下:

     3.如果只想把数组的值传递到函数中,不然函数修改数组的值,应该怎么办呢?

    void cit(const int b[],int n)

    这样如果函数中不小心修改了数组,则会弹出错误提示

    使用const意味着在函数cit中将数组视为只读数据。

    下面的程序就会出错误提示

    void cit(const int b[],int n){//将a的地址传给b,修改a相当于修改b 
    	b[1]=1113;//这里其实修改的是a[5],因为b[0]对应的是a[4]; 
    	cout<<b[1]<<endl;
    }
    

     总结:处理数字的C++函数,必须将数组中的数据类型,数组的起始位置和数组中元素数量提交给它;传统方法是将数组名(首地址)作为一个参数,数组长度作为第二个参数。 

  • 相关阅读:
    计算机图形学学习方法和相关书籍,做游戏,GIS,虚拟现实,三维引擎的都能够看看.
    HDU 1248 寒冰王座(全然背包:入门题)
    android widget 开发实例 : 桌面便签程序的实现具体解释和源代码 (上)
    Oracle varchar 字段排序问题
    Response.AddHeader使用实例
    Unity 3D 文件导入出错
    Sencha app build 出现 missing name after . operator 问题
    TFS(Team Foundation Server)介绍和入门
    较具体的介绍JNI
    Struts2学习笔记1
  • 原文地址:https://www.cnblogs.com/ssfzmfy/p/12520570.html
Copyright © 2011-2022 走看看