c++二维数组作为形参传递参数

在写代码时,有时涉及到二维数组的形参传递,这个问题很小,但是当解决不好时可能会导致程序编写的复杂程度。因此有必要在这里重说一下:

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;
}

传递的就是使用常数作为第二维数组的值。

猜你喜欢

转载自blog.csdn.net/feiyanjia/article/details/81139109