在写代码时,有时涉及到二维数组的形参传递,这个问题很小,但是当解决不好时可能会导致程序编写的复杂程度。因此有必要在这里重说一下:
1.《C++ Primer》中给出的方法:
void func1(int iArray[][10])
{
}
int main()
{
int array[10][10];
func1(array);
}
此时必须给定第二维数组的值。
.2.二维数组引用作为形参
void func3(int (&pArray)[10][10])
{
}
int main()
{
int array[10][10];
func3(array);
}
必须指定两个维度的值。
3.例如在进行二维数组查找时:
#include<iostream>
using namespace std;
int search(int N, int array[][4], int Number)
{
for (int i = 0; i < 5; i++)
{
int start = 0;
int end = N - 1;
while (start <= end)
{
int mid = (start + end) / 2;
if (Number>array[i][mid])
{
start = mid + 1;
}
else if (Number < array[i][mid])
{
end = mid - 1;
}
else
{
cout << i << "," << mid << endl;
return i,mid;
}
}
}
return -1;
}
int main()
{
int M = 5, N = 4;
int a[5][4] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 }, { 13, 14, 15, 16 }, { 17, 18, 19, 20 } };
int j = 0;
search(N, a, 18);
//cout << search(N, a, 18) << endl;
system("pause");
return 0;
}
传递的就是使用常数作为第二维数组的值。