C 雜記 陣列的語法我總忘記 記之

2021-06-29 10:42:04 字數 1616 閱讀 7295

宣告乙個陣列

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型陣列的引用 值得注意的是,...