C語言 :數組

1.數組的下標:

   C語言中數組的下標是從0開始,例如 :

Int a[Max];   Max是編譯時可知的值,它的元素是從a[0]到a[Max-1];

2.數組後面第一個元素的地址是否可以使用:

   數組後面第一個元素的地址可以使用但不可以查看。例如果寫如下語句:

      Int i, a[Max], j;

  i和j都有可能數組a最後一個元素後面的地址中,即可能使用了該地址;但如果直接對該地址進行操作,像將某些數據存入a[Max]中,就可能會破壞緊跟在數組a後面的數據。即使查看a[Max]的值也應該避免。

3.數組作爲參數傳遞給函數時,能否通過sizeof得到數組的大小:

不可以,因爲數組名傳遞的是數組首元素地址,通過sizeof得到的永遠是地址存放空間的大小,例如: char a[20] = {‘a’, ‘b’, ‘c’};用sizeof(a)得到的是4。

4.如何得到數組大小:

若爲char類型可以通過strlen,但這是一個特例。通常採用以下兩種方法:

(1)將數組和表示數組大小的值一起傳遞給函數,如,char a[10];

            C(a, 10);

 (2)引入某種規則來結束一個數組。例如在C語言中字符串總是以‘\0’結束,而一個指針數組總是以空指針結束;故字符串大小可以用strlen得到;而指針數組大小可以用while(*string)循環得到。

5.指針和帶下標的數組名訪問元素的效果哪一種更好:

指針訪問元素更高效。因爲遍歷數組,要確定a[i]的地址,需要將i和類型相乘後再於數組a 中的第一個元素地址相加;而用指針遍歷數組只需間接引用指針。

6.是否可以把另一個地址賦給數組名:

不可以。數組名不能被放在賦值運算符的左邊。

7.數組名和取地址數組名的不同:

這裏以 int a[10]; 爲例。a是指向數組第一個元素的地址,而&a是指向整個數組的指針。a + 1表示數組第二個元素的地址,而 &a + 1表示數組最後一個元素後的地址。a + 1是以數組的一個元素爲單位進行的加法,  &a + 1是以整個數組裏的所有元素爲單位進行的加法。

8.const 說明的常量能否用來定義一個數組的初始大小:

不能。在C程序中,只有C語言的常量表達式才能定義一個數組的初始大小,一個初始化了的const int 變量並不是一個常量表達式。

9.字符串和數組的不同:

數組的元素可以是任意一種類型,而字符串是一種特別的數組。

10.數組名和指針:

數組名是一個指針,它指向數組的第一個元素,而指針並不是數組名,數組名可以賦給指針,但指針不能賦給數組名。

發佈了26 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章