C++用数组元素作函数实参
C++中实参可以是表达式,而数组元素可以是表达式的组成部分,因此数组元素可以作为函数的实参,与用变量作实参一样,将数组元素的值传送给形参变量。
C++也可以用数组名作函数参数,
此时实参与形参都用数组名。
形参可以是数组名,也可以是指针变量,它们用来 接收实参传来的地址。如果形参是数组名,它代表 的是形参数组首元素的地址。
在调用函数时,将实 参数组首元素的地址传递给形参数组名。这样,实 参数组和形参数组就共占同一段内存单元。
在C++中,数组名可以作实参和形参,传递的是数组的起始地址。
C++用数组名作函数参数有三点需要读者注意:
- 如果函数实参是数组名,形参也应为数组名,形参不能声明为普 通变量。实参数组与形参数组类型应一致,如不一致,结果将出错。
- 数组名代表数组首元素的地址,并不代表数组中的全部元素,因此用数组名作函数实参时,不是把实参数组的值传递给形参, 而只是将实参数组首元素的地址传递给形参。
- 在用变量作函数参数时,只能将实参变量的值传给 形参变量,在调用函数过程中如果改变了形参的 值,对实参没有影响,即实参的值不因形参的值改 变而改变。而用数组名作函数实参时,改变形参数 组元素的值将同时改变实参数组元素的值。
C++用多维数组名作函数参数
如果用二维数组名作为实参和形参,在对形参数组 声明时,必须指定第二维的大小,且应与实参的第二维的大小相同,第一维的大小可以指定, 也可以不指定。
//如
int array[2][3];形参数组的两个维度都指定大小
int array[][3];//只中定第二维的大小,省略第一维
上述两种写法都是符合C++的语法规则的,但是读者需要知道,不能把第二维的大小省略,否则会出错。
int array[][];//不确定二维数组的每一行每一列有多少个元素
int array[2][];//不确定第二维大小,就无法确定数组的结构
在第二维大小相同的前提下,形参数组的第一维可 以与实参数组不同
经典案例:C++求3*4矩阵中最大的数。
#include<iostream>//预处理
using namespace std;//命名空间
int main()//主函数
{
int max_Array(int array[3][4]); //函数声明
int array[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};//定义二维数组,且赋初值
int max;//定义整型变量
cout<<"最大的数是:";//提示语句
max=max_Array(array);//调用下面我写的求最大值函数
cout<<max<<endl;//输出这个数
return 0;//函数返回值为0
}
int max_Array(int array[3][4])//自定义函数
{
int i,j,max;//定义变量
max=array[0][0];//把二维数组的第一个元素赋值给max
for(i=0;i<3;i++)//外层循环限制行
{ for(j=0;j<4;j++)//内层循环限制列
{ if(array[i][j]>max)//如果数组中有比max大的数
{ max=array[i][j];//则把大的数赋值给max
} }
}
return max;//将大的数返回到函数调用处
}
执行以上程序会输出:
最大的数是:12
--------------------------------
Process exited after 2.029 seconds with return value 0
请按任意键继续. . .
文章来源: zhuanlan.zhihu.com,作者:,版权归原作者所有,如需转载,请联系作者。
原文链接:zhuanlan.zhihu.com/p/326971976