宣告乙個陣列
double mylist[10];
宣告多個陣列
double mylist[10], mylist2[10];
宣告陣列時,中括號內的陣列必須為常量。
mylist[0] = 6;
當乙個陣列宣告後還沒有賦值,元素內容是任意的。
double mylist[4] = ;
double mylist = ;
中括號中的數字是可以省略的,因為編譯器會自動計算大括號內的元素數目。
double mylist[4] = ;
上述語句相當於
double mylist = ;
陣列初始化語句相當於對陣列先宣告後賦值,如果大括號中的元素數目不足中括號中的數字,則使用元素0補齊。
函式的定義如下所示:
void printarray(int list, int arraysize)
}
函式的呼叫如下所示:
int list = ;
printarray(list, 3);
1、為了效率的考慮,陣列作為函式引數進行傳遞,本質是傳遞了陣列的首位址。是按引用方式傳遞的。
2、在傳遞1維陣列時,在形參處可以不填寫中括號中的數字。中擴號的意思是告訴編譯器,傳入的引數時乙個陣列的首位址,在函式體中可以使用下標訪問其元素。
3、陣列在記憶體中是連續儲存的,所以在函式中,可以使用下標變數來訪問相應的陣列元素。
4、c++語法不會判斷陣列訪問越界。但是在程式執行過程中,如果發生了陣列越界,就會發生runtime error。因此在傳入陣列的同時,要傳入陣列的大小。
c++不允許返回乙個陣列型別,諸如下面的語句:
int reverse(const int list, int size);
但是由於c++傳遞陣列時引用傳遞,因此可以在函式外部宣告乙個陣列,通過函式改變其內部元素值。這樣與返回乙個陣列時同樣的效果。
void reverse(const int list, int newlist, int size);
上面的語句將list傳入函式reverse中,reverse將list反轉後儲存在newlist中。
由於陣列的傳遞時引用傳遞,因此,如果不希望陣列的內容被函式改變,那麼就需要在形參前加關鍵字const;如果希望陣列時作為返回值的,那麼就再形參前不加關鍵字const。
2維陣列的宣告、賦值、初始化語句只需參看1維陣列的進行擴充套件。
2維陣列作為函式引數與1維陣列略有不同。2維陣列作為函式的引數傳遞時,第二個方括號內必須填寫數字。例如:
void func(int array[3][10], int rowsize, int colsize){
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 10; j++) {
cout 所以,在傳入2維陣列時,必須傳入第二維的大小。
同理,在使用高維陣列時,只可以省略第1個中括號內的數字,其餘的中括號的內的數字必須填寫。
引用:1、
csdn部落格 liyongbao1988的專欄 c/c++如何傳遞二維陣列? 2、
cnblog jihite 【c++】指標引數是如何傳遞記憶體的
C 容易忘的基本語法和特性
原文 c 容易忘的基本語法和特性 標準 c 中容易忘記但比較重要和常用的基本語法和特性 這是 c 或 c in c 而不一定是傳統 c 語言的語法和特性 零 0字面量 0 是基本型別自動適應的,指標請直接使用 0 而不是 null 巨集,如 double dval 0 0 是 double 型別,寫...
C 容易忘的基本語法和特性
原文 c 容易忘的基本語法和特性 標準 c 中容易忘記但比較重要和常用的基本語法和特性 這是 c 或 c in c 而不一定是傳統 c 語言的語法和特性 零 0字面量 0 是基本型別自動適應的,指標請直接使用 0 而不是 null 巨集,如 double dval 0 0 是 double 型別,寫...
困擾我的c 語法
以下是我上週學習c primer的心得 c 允許將變數定義成陣列的引用,以下列 為例。形參為int arr 10 該引數需分成兩部分說明,引用名和 引用定義。引用名arr和 結合,表示其是乙個引用 和下標運算子結合,表示其是乙個陣列的引用 和int結合,表示其是乙個int型陣列的引用 值得注意的是,...