C++数组作为函数参数(附带实例)
函数调用过程中有时需要传递多个参数,如果这些参数类型相同,可以通过数组的方式来传递参数。数组可以是一维的,也可以是二维的。
使用数组做函数参数,最典型的就是 main() 函数。带参数的 main() 函数形式如下:
例如,在 CMD 控制台执行 dir 命令,可以带上“/w”参数,“dir /w”命令是以多列的形式显示文件夹内的文件名。main() 函数中参数 argc 获取命令参数的个数,argv 是字符指针数组,可以获取具体的命令参数。
【实例 1】获取命令参数。输出 main() 函数的参数内容,代码如下:

图 1 获取命令参数
上面的代码在工程 sample 中将生成 sample.exe 应用程序,在执行 sample.exe 时在后面加上参数,程序就会输出命令参数。
程序执行时,输入命令参数“/a /b /c”,程序运行以后将 3 个命令参数输出,每个参数都以空格隔开,应用程序后有 3 个空格,代表程序有 3 个命令参数,argc 的值为 3。
二维数组作为函数参数时,可以将其转换成一个一维指针数组。main() 函数中的 argv 数组就是一个二维字符数组。下面来看一个例子:
【实例 2】寻找最小值,定义一个寻找每行数组中最小值的 mix() 函数,在主函数中为数组赋值,然后调用 mix() 函数,具体代码如下:
使用数组做函数参数,最典型的就是 main() 函数。带参数的 main() 函数形式如下:
int main(int argc,char *argv[])main() 函数中的参数可以获取程序运行的命令参数,命令参数是执行应用程序时后面带的参数。
例如,在 CMD 控制台执行 dir 命令,可以带上“/w”参数,“dir /w”命令是以多列的形式显示文件夹内的文件名。main() 函数中参数 argc 获取命令参数的个数,argv 是字符指针数组,可以获取具体的命令参数。
【实例 1】获取命令参数。输出 main() 函数的参数内容,代码如下:
#include <iostream> using namespace std; int main(int argc,char *argv[]) { cout << "the list of parameter:" << endl; while(argc>1) { ++argv; cout << *argv << endl; --argc; } }运行结果如下图所示:

图 1 获取命令参数
上面的代码在工程 sample 中将生成 sample.exe 应用程序,在执行 sample.exe 时在后面加上参数,程序就会输出命令参数。
程序执行时,输入命令参数“/a /b /c”,程序运行以后将 3 个命令参数输出,每个参数都以空格隔开,应用程序后有 3 个空格,代表程序有 3 个命令参数,argc 的值为 3。
二维数组作为函数参数时,可以将其转换成一个一维指针数组。main() 函数中的 argv 数组就是一个二维字符数组。下面来看一个例子:
【实例 2】寻找最小值,定义一个寻找每行数组中最小值的 mix() 函数,在主函数中为数组赋值,然后调用 mix() 函数,具体代码如下:
#include <iostream> using namespace std; #define N 4 void mix(int (*a)[N], int m) //定义 mix()函数,逐行进行比较,找到各行的最小元素 { int value, i, j; for(i = 0; i < m; i++) //逐行比较 { value = *(*(a + i)); for(j = 0; j < N; j++) //寻找最小值 if(*(*(a + i) + j) < value) value = *(*(a + i) + j); cout << "line " << i; cout << ": the mix number is " << value << endl; } } int main() { int a[3][N], i, j; int (*p)[N]; p = &a[0]; cout << "please input:" << endl; for(i = 0; i < 3; i++) //输入 12 个数,为 3 行 4 列数组赋值 for(j = 0; j < N; j++) cin >> a[i][j]; mix(p, 3); //调用 mix()函数,输出每行元素的最小值 }程序运行结果为:
please input:
1
2
3
4
5
6
7
8
9
10
11
12
line 0: the mix number is 1
line 1: the mix number is 5
line 2: the mix number is 9