在寫代碼時,有時涉及到二維數組的形參傳遞,這個問題很小,但是當解決不好時可能會導緻程式編寫的複雜程度。是以有必要在這裡重說一下:
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;
}
傳遞的就是使用常數作為第二維數組的值。