第十章 陣列和指標

2021-08-30 13:57:22 字數 1882 閱讀 5874

陣列初始化

當初始化列表中的值少於陣列元素個數時,編譯器會把剩餘的元素都初始化為0;個數多於陣列元素個數時,會視為錯誤

省略陣列中括號中的數字,編譯器會根據初始化列表中的專案來確定陣列的大小。

days是陣列

sizeof days是整個陣列的大小

sizeof day[0]是陣列中乙個元素的大小

c不允許把陣列作為乙個單元賦給另乙個陣列,除了初始化外也不允許使用花括號列表的形式賦值

使用越界的陣列下標會導致程式改變其他變數的值

c99之前,陣列大小的定義只能在方括號中使用整型常量表示式

多維陣列

float rain[5][12]//乙個內含12個float型別元素的陣列

int bos[10][20][30]//box內含10個元素,每個元素是內含20個元素的陣列,這20個元素的陣列中的每個元素是內含30個元素的陣列

初始化多維陣列

,,//後面乙個元素被初始化為0

};陣列名是陣列首元素的位址

dates+2==&dates[2]//相同的位址

*(dates+2)==dateds[2]//相同的值

函式傳入陣列

可以把陣列大小作為第二個引數

int sum(int *ar,int n)

int sum(int a,int n)

在函式原型中可以省略陣列名,在定義中不能省略引數名

指標求差:求差的兩個指標分別指向同乙個陣列的不同元素,通過計算求出兩元素之間的距離。差值的單位與陣列型別的單位相同

不要解引用未初始化的指標,因為在建立乙個指標的時候,系統只分配了儲存指標本身的記憶體,並未分配儲存資料的記憶體,因此,在使用指標之前,必須先用已分配的位址初始化它

const

int sum(const int ar,int n)//const並不是要求原陣列是常量,而是該函式在處理陣列時將其視為常量,不可更改。

const double *pd=rates;//指向const的指標不能用於改變值

把const資料或非const資料的位址初始化為指向const的指標或為其賦值是合法的

double *const pc=rates;//宣告並初始化乙個不能指向別處的指標

const double *const pc=retes;//該指標不能更改它所指向的位址,也不能修改指向位址上的值

指標和多維陣列

int zippo[4][2];

zippo//二維陣列首元素的位址(每個元素內含兩個int型別元素的一維陣列,與zippo[0]的區別是,zippo是乙個占用兩個int大小物件的位址,zippo[0]是乙個占用乙個int大小物件的位址,但是值是相同的)

zippo+2//二維陣列的第三個元素(即一維陣列)的位址

*(zippo+2)//二維陣列的第三個元素(一維陣列)的首元素(乙個int型別的值)位址

*(zippo+2)+1//二維陣列的第3個元素的第2個元素位址

((zippo+2)+1)//二維陣列的第三個一維陣列元素的第2個int型別元素的值,即zippo[2][1]

*zippo與&zippo[0][0]等價

指向多維陣列的指標

int (*pz)[2];//pz指向乙個內含兩個int型別的陣列

宣告乙個指向n維陣列的指標時,只能省略最左邊方括號中的值int sum2(int ar[12][20][30],int rows);

變長陣列

允許使用變數表示陣列的維度

int quarters=4;

int regions=5;

double sales[regions][quarters];

變長陣列必須是自動儲存類別,而且不能在宣告中初始化它們。

int sum(int rows,int cols,int ar[rows][cols])

C Primer Plus 第十章 陣列和指標

int sum int ar,int n intsum int int intsum int ar,int n intsum int int 指標減去乙個整數 指標必須是第乙個運算物件 相加的逆操作。遞減指標 逆操作遞增 指標求差 可以計算兩個指標的差值。通常,求差的兩個指標分別指向同乙個陣列的不同...

第十章 陣列與指標( C primer plus)

0.陣列長度建議定義為巨集。由於編譯器不檢查陣列下標的合法性,這樣可減少下標越界錯誤。1.唯讀陣列宣告最前面加const,且必須同時初始化。2.陣列屬於自動儲存類,陣列元素的值不初始化時是不定的 部分初始化,後面預設為0 多初始化出錯。3.可以讓陣列長度空著,由編譯器根據初始化的數值的個數確定陣列大...

第十章 Lua陣列

1.一維陣列 array for i 0,2 do print array i end執行結果 nil lua tutorial正如你所看到的,我們可以使用整數索引來訪問陣列元素,如果知道的索引沒有值則返回nil。在 lua 索引值是以 1 為起始,但你也可以指定 0 開始。除此外我們還可以以負數為...