在c語言中,陣列作為函式引數時,實際上陣列已經退化為指標使用。
下面這三種用法是等價的:
這樣一來,在f1中是無法知道陣列的大小的,開發者必須提前知道陣列大小。
c++中定義了陣列的引用(例如,int (&a)[2]),可以有效的防止陣列退化。
也就是,陣列作為函式引數傳遞過去後,仍然是乙個陣列。
語法:型別 (&引用名)[陣列中元素數量]=陣列名;
舉例說明其用法
#include
using namespace std;
int f1(int (&a)[6])
return count;
}cout<<"count:" } 在c 中,陣列永遠不會按值傳遞。它是傳遞第0個元素的指標 即首位址 例如,如下宣告 void putvalues int 10 被編譯器視為 void putvalues int 陣列的長度與陣列的宣告無關。因此,下列三個宣告是等價的 void putvalues int void putvalue... 如下定義就得到乙個陣列的引用 型別名 變數明 n 在進行引數的傳遞時,陣列引用可以幫助我們防止陣列退化為指標,而這是我們在程式設計中很難注意到的問題。下面來看乙個例項 include void each int int ref 10 each int array 問題1 sizeof 的值?each... 在c 裡,陣列也是可以引用的。如下 1 char str1 abcde 2char str2 6 str1 解讀第二句 括號的優先順序最高,str2 首先與 相結合,表明 str2 是乙個引用。接著 str2 與右邊的 6 結合,表明str2是陣列的引用,且陣列中有6個元素。最後 str2 6 與左...C 高階 C 中的陣列退化
引數傳遞時陣列引用保護陣列退化為指標
c 中陣列的引用