數組在傳入函數的時候會退化成指針。 一維數組就直接退化成指針,二維數組退化成一個指向一維數組的指針,如char (*)[32] 可選方式: char a[ ][ ]; func(char b[ ], int rows, int cols); func(char (*b)[ ] ); 指針數組:array of pointers,即用於存儲指針的數組,也就是數組元素都是指針 數組指針:a pointer to an array,即指向數組的指針 int (*p)[10]; 定義了一個數組指針,這個指針與一般的指針沒有什麼區別,僅僅是這個指針指向一個數組。這裡我們把數組作為了基本的元素處理。也就是說,將整個數組作為一種類型,而數組名就是這個類型的一個具體變量。例如: int a[10]; 一個數組類型,形狀就是這樣:int [10]; a就是新定義的一個變量。 對於數組類型:int [10],我們可以定義一個指針,int (*p) [10].注意這裡一定要加上小括弧。否則就會變成了指針數組。定義了指針之後,我們可以對該指針賦值,如p=&a;如果定義了一個二維數組,int c[3][10]。我們可以認為定義了一個一維的數組,這個數組有三個int[10]的元素。因此和一般的數組一樣,我們可以將該數組名賦給指針,其實也就是第一個元素的地址付給指針。即: p=c;或者p=&c[0]。其余情況以此類推。