1. 程式人生 > >c++中如何解決函式呼叫二維陣列的問題。

c++中如何解決函式呼叫二維陣列的問題。

1.可以用二維陣列名作為實參或者形參,在被呼叫函式中對形引數組定義時可以指定所有維數的大小,也可以省略  第一維的大小說明,如:

void Func(int array[3][10]);

void Func(int array[][10]);

呼叫函式時,我們只要告訴編譯器我們呼叫函式的名字就可以了,上面函式的呼叫方法為:

           Func(array);

2.用帶有指標變數的方法:

    用一維陣列來傳遞二維陣列

#include<iostream>
#include<stdlib.h>
using namespace std;
void Func(int *a, int col, int row)
{
	a =(int*)malloc(sizeof(int) * row * col);
	for(int i=0;i<col;i++){
	 for(int j=0;j<row;j++){
			a[(i-1)*col + j-1]=i*col + j;
			cout<<a[(i-1)*col + j-1]<<" "; 
	 }
	 		cout<<endl;
	}
} 
int main(){
	int *a;
	int col=5;
	int row=4;
	Func(a,col,row);
	return 0;
}

3.可以在標頭檔案之後就直接定於好需要訪問的陣列變數,這樣之後任何函式都可以去訪問這個直接定義好的陣列,免去了很多麻煩。

比如定義一個 int a[8][8={0},這樣所有函式呼叫的時候都可以直接呼叫了。

4.

 solve(1,n,a,(int *)b);

void solve(int row,int col,int *b)

 b[row*n+x] 這樣呼叫就可以訪問二維陣列了