)
第七章 函数第四节 数组作为函数参数1. 数组元素作为函数实参#include iostream int whichmax(int x, int y) { return (x y ? x : y); } int main() { std::cout Hello, World! std::endl; //相当于定义了10个变量,a[0]-a[9] int a[10]; a[0] 100; a[1] 12; int res whichmax(a[0], a[1]); printf(whichmax res: %d\n, res); return 0; }2. 数组名作为函数实参实参和形参个数要相等,类型要一致,按顺序对应,一一传递实参变量对形参变量的数据传递是值传递,也就是单项传递,只由实参传递给形参,不能由形参传递实参数组名可以作为函数实参,数组名代表的是数组首地址,当将数据名作为函数的实参传递时,此时传递的是数组的首地址,此时,函数中的形参也应该使用数组名(也可以是数组指针)数组名作为函数参数时,不是值传递,不是单项传递,而是把实参数组的开始地址传递给了形参数组,这样两个数组就会共同占用一段内存,这个是叫地址传递(不重新分配内存了),也就是说,形参数组中各个元素的值如果发生了变化,会导致实参数组元素的值也发生相应改变,这一点,是与变量做函数参数明显不同的说明:1.如果实参为数组名,形参也为数组名2.形参数组与实参数组类型要一致,比如都为int型,否则会得到意想不到的错误3.形参数组大小可以不指定,即便制定了也可以与实参数组大小不一致,因为c编译器对形参数组大小不做检查,只是将实参数组的首地址传给了形参3. 用多维数组名作为函数实参可以用多维数组名作为实参和形参,形参数组在定义是,可以指定每一维的大小,也可以省略第一维的大小,但不能省略第二维的大小实参和形参尽量保证行列一致,这样实参和形参引用的下标可以保持一致,减少错误的几率#include iostream void changVal(int b[3][4]) { b[0][0] 20; b[1][2] 0; b[2][3] 50; return; } int main() { std::cout Hello, World! std::endl; int a[3][4] {85, 70, 98, 92, 78, 40, 90, 33, 80, 75, 64, 84}; changVal(a); for (int i 0; i 3; i) { for (int j 0; j 4; j) { printf(the value of a[%d][%d]: %d\n, i, j, a[i][j]); } } return 0; }