1.陣列名,除了作為sizeof操作符或單目運算子&的運算元時(sizeof返回陣列的長度:包括初始化的和未初始化的,而不是指向陣列的指標的長度;取乙個陣列名的位址所產生的是乙個指向陣列的指標,而不是乙個指向陣列型別的指標的指標),其他情況下,是乙個常量指標(不是指標變數),指向陣列第乙個元素的位址(第乙個元素也可以使乙個陣列),不能作為左值
2.陣列可以在定義時直接初始化,或者在定以後逐個初始化,或者用迴圈來初始化,見給乙個陣列複製給另乙個陣列時,不能直接賦值,而應該使用迴圈逐個初始化
3.除了下標引用優先順序高於間接訪問,兩者完全相同,也就是說對於陣列,可以當等的使用下標引用和間接訪問,但是下標引用可讀性更好,間接訪問更有效率
4.c不對陣列下標進行檢查的原因在於下標引用可以作用於任意的指標,而不僅僅是陣列名,作用於指標的下標引用的有效性既依賴於該指標當時恰好指向什麼內容,一依賴於下標的值,於是c的下標檢查所涉及的開銷很大
5.指標的效率:當使用固定的步長在陣列中移動時,使用指標變數比使用下標效率更高;如果可以通過測試一些已經初始化並經過調整的內容來判斷迴圈是否應該終止,那麼你就不需要使用乙個單獨的計數器;那麼必須在執行時求值的表示式較之在編譯時就已經得到的常量表示式代價更高
6.宣告乙個陣列時,編譯器將根據宣告所指向的元素數量為陣列保留記憶體空間,然後再建立陣列名,它的值是乙個常量,指向這段空間的起始位置。宣告乙個指標變數時,編譯器只為指標本身保留記憶體空間,它並不為任何整型值分配記憶體空間。而且,指標變數並為被初始化為指向任何現有的記憶體空間,如果它是乙個自動變數,它甚至不會被初始化
7.當將陣列名作為引數傳遞給乙個函式時,實際上傳遞的是陣列名表示的指向陣列第乙個元素的位址的指標的拷貝,是值傳遞的方式,但修改指標所指向位址的內容會修改陣列元素的值,屬於位址呼叫
8.函式原型中一維陣列形參無需寫明它的元素數目的原因是函式並不為陣列引數分配記憶體空間,形參只是乙個指標,它指向的是乙個已經在其他地方分配好的記憶體空間,它只是指向陣列第乙個元素的指標
9.存放於靜態記憶體的陣列只初始化一次,由聯結器在程式執行前完成,但對於自動變數,程式每次呼叫該陣列時,函式都會用一條隱蔽的複製語句初始化
10.char message1 = "hello,world";char *message2 = "hello,world";前者為初始化乙個字元陣列的元素,後者則是乙個真正的字串常量。這個指標變數被初始化為指向這個字串常量的儲存位置。
第八章 陣列
一 含義 1.識別符號 用於區分不同陣列的變數名 2.陣列元素 陣列中存放的資料 3.陣列下標 對陣列進行的編號 4.元素型別 即資料型別 二 語法,步驟 1.宣告變數 資料型別 s陣列名 資料型別 陣列名 2.分配空間 陣列名 new 資料型別 陣列長度 資料型別 陣列名 new int 陣列長度...
第八章 陣列
第八章 陣列 1 陣列的基本操作 1 陣列也是一種復合型別資料型別,它由一系列相同型別的元素組成。2 定義陣列int count 4 整個陣列佔了4個相鄰的整數的儲存空間,方括號的4表示陣列的長度,而陣列元素是從0開始的,count i 位於從陣列開頭跳過4 i個位元組的儲存位置,這個陣列下標的表示...
第八章 陣列
第八章 陣列 1.陣列是一組具有相同型別的變數集合,可使用乙個統一的名字來標識這組相同型別的資料,這個名字稱為陣列名,構成陣列的每個資料項稱為陣列元素.例 用如下陣列來儲存五個學生的成績 int score 5 int代表該陣列的基型別。即陣列中元素的型別.score後方括號內的數字代表陣列元素的個...