(C/C++语言将二维数组作为参数传递)
将二维数组作为参数的函数,数组名被视为地址,因此,相应的形参是一个指针。
- 形参为二维数组,并给出第二维长度。void two_dimensional_array_1(int n, int args[][5]);
- 形参为指向数组的指针,并给出数组长度。void two_dimensional_array_2(int n, int (*args)[5]);
- 形参为指向指针的指针。void two_dimensional_array_3(int n, int l, int **args);
/***形参为二维数组,并给出第二维长度***/
#include <iostream>
using namespace std;
/**
*形参为二维数组并给定第二维长度
*/
void two_dimensional_array_1(int n, int args[][5]) {
int i;
for (i = 0; i < n; i++) {
for (int var = 0; var < 5; ++var) {
printf("two_dimensional_array_1[%d][%d] = %d\n", i, var,
args[i][var]);
}
}
}
/**
*形参为指向数组的指针
*/
void two_dimensional_array_2(int n, int (*args)[5]) {
int i;
for (i = 0; i < n; i++) {
for (int var = 0; var < 5; ++var) {
printf("two_dimensional_array_2[%d][%d] = %d\n", i, var,
args[i][var]);
}
}
}
/**
*形参为指向指针的指针
*/
void two_dimensional_array_3(int n, int l, int **args) {
for (int i = 0; i < n; i++) {
for (int var = 0; var < l; ++var) {
printf("two_dimensional_array_3[%d][%d] = %d\n", i, var,
args[i][var]);
}
}
}
int main() {
int args[][5] = { { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 } };
int *a[3];
a[0] = args[0];
a[1] = args[1];
a[2] = args[2];
two_dimensional_array_1(3, args);
two_dimensional_array_2(3, args);
two_dimensional_array_3(3, 5, a);
return 0;
}