C語言陣列

2021-08-16 20:19:08 字數 827 閱讀 5122

1. 使用迴圈對陣列進行下標引用時,計算機每次都需要進行:取下標值->將它與陣列元素型別大小相乘->獲取位址值。而使用指標時,指標++,編譯器只需計算一次,然後記錄下來,下次會自動進行偏移(由於陣列是由相同元素組成的)。所以使用下標,其效率可能比指標低,單一定不會比指標高。但下標可讀性好,導致可維護性高,所以變成時需要權衡效率和可讀性!

2. 陣列名只是乙個指標常量,指向陣列首位址(第乙個元素位址)。所以不能對陣列名進行會產生」***「的四則運算。

3. 所有函式傳參都是通過傳值方式傳遞的,哪怕傳的是陣列名和指標,都是傳其值的乙份拷貝!

4. 陣列名為陣列首位址,即第乙個元素的位址,所以陣列名值加1的操作為元素位址指標加1,從而指向下乙個元素;而取陣列名的位址得到的是整個陣列,陣列名位址加1的操作為位址偏移整個陣列大小;

intar[10];

ar == &ar[0], ar+1 == &ar[1];

&ar 得到整個陣列, &ar+1往後偏移整個陣列長度.

5. 對於指標陣列,應該以 null指標 為最後乙個元素結束.

理論支援:

陣列收包含0個或多個相同元素的集合,注意:是0個或多個,也就是說陣列元素個數可以是0個;對於0個元素的陣列,其含義是:編譯器不分配記憶體空間,但會分配乙個位址給他,這個位址就是陣列名;

巧妙利用這個特性:

擁有乙個位址,那麼,在結構體成員當中,在需要使用資料空間時,可以使用 malloc 函式多分配資料需要的空間給結構體,這樣就可以直接使用陣列名來訪問該空間資料,可以把它理解為不佔記憶體空間的指標;只不過,它不是乙個指標,不能直接接 malloc 函式分配的資料空間位址.這樣就達到了節省乙個指標空間的作用,多用於鍊錶資料節點結構體;

c語言陣列

陣列 構造資料型別之一 陣列是具有一定順序關係的若干個變數的集合,組成陣列的各個變數稱為陣列的元素。陣列中各元素的資料型別要求相同,用陣列名和下標確定。陣列可以是一維的,也可以是多維的。在科學計算中,許多重要的應用都是基於陣列的。所謂一維陣列是指只有乙個下標的陣列。它在計算機的記憶體中是連續儲存的。...

C語言陣列

在變數作函式引數時,所進行的值傳送是單向的。即只能從實參傳向形參,不能從形參傳回實參。形參的初值和實參相同,而形參的值發生改變後,實參並不變化,兩者的終值是不同的。而當用陣列名作函式引數時,情況則不同。由於實際上形參和實參為同一陣列,因此當形引數組發生變化時,實參陣列也隨之變化。當然這種情況不能理解...

C語言 陣列

陣列 void test1 for int i 0 i 5 i for int i 0 i 5 i 陣列資料倒序存放 void test2 printf 請輸入5個學生的成績 n for int i 4 i 0 i printf 輸出5個學生的成績 n for int i 0 i 5 i 將陣列的長...