热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C++023数组作为函数参考

C023-数组作为函数参考-2020-3-9不但可以使用变量作函数参考,还可以使用数组元素作为函数实参,其用法与变量相同。数组名也可以作实参和形参&#x

C+±023-数组作为函数参考-2020-3-9

不但可以使用变量作函数参考,还可以使用数组元素作为函数实参,其用法与变量相同。数组名也可以作实参和形参,传递的是数组首地址。
下例是用数组元素作函数实参。

数组元素做函数实参

//数组元素做函数实参
#include
using namespace std;
void change(int a,int b)
{int temp;temp=a;a=b;b=temp;//a与b的值互换
}
int main()
{int a[]&#61;{1,2,3,4,5,6,7,8};int b[]&#61;{-1,-2,-3,-4,-5,-6,-7,-8};int i;for (i&#61;0;i<8;i&#43;&#43;)change(a[i],b[i]);for(i&#61;0;i<8;i&#43;&#43;){cout<<"a:"<<a[i]<<endl;cout<<"b:"<<b[i]<<endl;}return 0;
}

a:1
b:-1
a:2
b:-2
a:3
b:-3
a:4
b:-4
a:5
b:-5
a:6
b:-6
a:7
b:-7
a:8
b:-8--------------------------------
Process exited with return value 0
Press any key to continue . . .

首先我们可以看出&#xff0c;使用数组元素作参数的用法与用变量作实参的用法是一样的。其次我们可以看出&#xff0c;虽然change函数中a与b的值互换了&#xff0c;但是最后打印的结果仍然未变。这说明参数的值是单向传递。即系统将a[i],b[i]值的拷贝传给了change函数&#xff0c;change函数所交换的是a[i],b[i]的拷贝&#xff0c;a[i]b[i]值的本身未变。

用数组名作参数1

//数组名作参数
#include
using namespace std;
void change(int x[],int y[])
{int temp,i;for(i&#61;0;i<8;i&#43;&#43;){temp&#61;x[i];x[i]&#61;y[i];y[i]&#61;temp; }
}
int main()
{int a[]&#61;{1,2,3,4,5,6,7,8};int b[]&#61;{-1,-2,-3,-4,-5,-6,-7,-8};int i;change(a,b);for(i&#61;0;i<8;i&#43;&#43;){cout<<"a:"<<a[i]<<endl;cout<<"b:"<<b[i]<<endl;}
}

a:-1
b:1
a:-2
b:2
a:-3
b:3
a:-4
b:4
a:-5
b:5
a:-6
b:6
a:-7
b:7
a:-8
b:8--------------------------------
Process exited with return value 0
Press any key to continue . . .

这个程序看似和上个程序一样&#xff0c;可是运行后我们却发现&#xff0c;数组a与数组b的值居然互换了。这是因为我们是用数组名作参数&#xff0c;所传递的不是它的拷贝&#xff0c;而是它的内存地址&#xff0c;所以&#xff0c;change函数形参中的数组x和数组y的首地址与main函数中数组a&#xff0c;数组b的首地址是指向同一个位置的&#xff0c;因为针对数组x&#xff0c;y的操作实际上也即是针对数组a&#xff0c;b的操作。
这是数组名作参数的一个很重要的知识点&#xff0c;请一定要掌握。

用数组名作参数2

//二维数组名作参数求二维数组的最大元素值
#include
using namespace std;
int Max(int a[][4])//形参数组的列数不可为空
{int i,j,Max;Max&#61;a[0][0] ;for(i&#61;0;i<3;i&#43;&#43;)for(j&#61;0;j<4;j&#43;&#43;)if(a[i][j]>Max)Max&#61;a[i][j];return Max;
}
int main()
{int a[][4]&#61;{1,2,3,4,5,6,7,8,9,-1,-2,-3};//此处可省略第一维数组大小cout<<"最大值为"<<Max(a)<<endl;//数组名作参数return 0; }

最大值为9--------------------------------
Process exited with return value 0
Press any key to continue . . .


推荐阅读
author-avatar
手机用户2502877953
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有