c++裡面把陣列當引數這個知識點一直不是很清晰。這次把他明確化了。
非引用引數的情況還是比較簡單的。
int compute(int array[4]);
int compute(int array);
int compute(int *array); // 編譯器會把上面兩個解釋成這個
以上三種原型都會被編譯器解釋為指標,因此即使在陣列定義裡寫了長度為4,依然可以傳任意長度的陣列進來。
首先,明確陣列的引用和引用的陣列。。
int compute(int &array[5]); // 引用的陣列,但其實這是不合法的,引用的陣列不可以作為函式引數
int compute(int (&array)[5]); // 陣列的引用,可以解釋為array首先被宣告是個引用,然後是int[5]的引用
引用的陣列不能作為引數的原因有以下幾點:
引用使用前必須被初始化。但是陣列是不能被另乙個陣列直接初始化的。
可以用指標陣列替代
陣列作為引用引數,如果定義了長度5,是會被檢測長度的。例如下面的呼叫就不合法:
int data[8];
compute(data); // 8!=5 error.
而且,data的長度是編譯器就決定的,array繫結的一定是長度為5的變數。因此sizeof可以得到結果20。
// 陣列作為引用引數
int compute(int (&array)[5])
// 陣列作為非引用引數
int compute(int array[5])
C語言陣列作為函式引數
一 陣列元素作為函式的實參 陣列元素就是變數,與普通變數沒有區別,將陣列元素傳送給形參,實現單向的值傳遞。include float max float x,float y int main int m a 0 for int i 1 i 6 i printf 陣列中的最大元素是 d m 二 陣列名...
陣列作為函式引數
一 一維陣列名作函式引數 用陣列名作函式引數,應該在主調函式和被調函式分別定義陣列,例如 void main 在被呼叫函式中宣告了形引數組的大小為10,但在實際中,指定其大小是不起任何作用的,因為c語言編譯對形引數組大小不做檢查,只將實參陣列的首元素位址傳給形引數組。形引數組可以不指定大小,在定義陣...
陣列作為函式引數
陣列元素的作用與變數相當,一般來說,凡是變數可以出現的地方,都可以用陣列元素代替。陣列名也可以做實參和形參,傳遞的是陣列第乙個元素的位址。陣列元素可以用作函式實參,但是不能用作形參,因為形參是在函式被呼叫時臨時分配儲存單元的,不可能為乙個陣列元素單獨分配儲存單元 陣列是乙個整體,在記憶體中佔連續的一...