一、一維數(shù)組作為輸入?yún)?shù):
大家都知道,如果一維數(shù)組作為參數(shù)的話,可以按如下方法來定義函數(shù):
int func(int *array);
或者
int func(int array[M]); 其中M是數(shù)組的大小。
?
二、二維數(shù)組作為輸入?yún)?shù):
而如果輸入?yún)?shù)是二維數(shù)組的話,可以按如下方法定義:
1. 直接以二維數(shù)組作為參數(shù):
int func(int array[M][N]);
或者 int func(int array[][N]);
也就是說,二維數(shù)組作為參數(shù),可以省略第一維的大小,但不可以省略第二維的大小,因為編譯器在尋址時是按p + i * N + j來對p[i][j]進行尋址的,所以第二維參數(shù)必須給出。
2. 以二維指針作為參數(shù):
int func(int **array);
我們可以定義二維指針,然后尋址時手工進行即可:*((int *)array + i * N + j),前面的(int *)是強制轉(zhuǎn)換成指針類型。