首页 > 代码库 > [C++程序设计]用数组名作函数参数
[C++程序设计]用数组名作函数参数
1. 用数组元素作函数实参
1 #include <iostream> 2 using namespace std; 3 4 int max_value(int x, int max) 5 { 6 return max > x ? max : x; 7 } 8 9 int main()10 {11 const int x = 3, y = 4;12 int a[x][y]={{34,62,34,101},{45,67,3,0},{11,45,97,100}};13 int max = a[0][0], i, j, ix, iy;14 15 for(i = 0; i < x; i ++)16 {17 for(j = 0; j < y; j++)18 {19 max = max_value(a[i][j],max);20 if(max == a[i][j])21 {22 ix = i;23 iy = j;24 }25 }26 }27 cout << "a[" << ix << "][" << iy << "]=" << max << endl;28 }
2. 用数组名作函数参数
关于用数组名作函数参数有两点要说明:
(1) 如果函数实参是数组名,形参也应为数组名(或指针变量,关于指针见第5章),形参不能声明为普通变量(如int array;)。实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。
(2) 需要特别说明的是: 数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。形参可以是数组名,也可以是指针变量,它们用来接收实参传来的地址。如果形参是数组名,它代表的是形参数组首元素的地址。在调用函数时,将实参数组首元素的地址传递给形参数组名。这样,实参数组和形参数组就共占同一段内存单元
声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[]这样的形式表示array是一维数组名,以接收实参传来的地址。因此array
[]中方括号内的数值并无实际作用,编译系统对一维数组方括号内的内容不予处理。形参一维数组的声明中可以写元素个数,也可以不写。
C++实际上只把形参数组名作为一个指针变量来处理,用来接收从 实参传过来的地址
1 #include <iostream> 2 #include <iomanip> 3 using namespace std; 4 5 void select_sort(int a[],const int n) 6 { 7 int i, j, k; 8 for(i = 0; i < n; i++) 9 {10 for(j = i + 1; j < n; j++)11 {12 if(a[i] > a[j])13 {14 k = a[j];15 a[j] = a[i];16 a[i] = k;17 }18 }19 }20 }21 22 int main()23 {24 const int n = 10;25 int a[n] = {2,45,67,13,8,5,1,200,50,23};26 int i;27 28 select_sort(a, n); 29 30 for(i = 0; i < n; i++)31 {32 cout << setw(5) << a[i];33 }34 cout << endl;35 return 0;36 }
3. 用多维数组名作函数参数
如果用二维数组名作为实参和形参,在对形参数组声明时,必须指定第二维(即列)的大小,且应与实 参的第二维的大小相同。第一维的大小可以指定,
也可以不指定。如
int array[3][10]; //形参数组的两个维都指定或
int array[][10]; //第一维大小省略
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。