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
ICP备案:
公安联网备案: