天天看點

《C Primer Plus》讀書筆記——數組和指針(1)

此章筆記以讀者有簡單的C語言基礎,對數組(array)、指針(pointer)有初步了解及應用,想紮實基礎或深入探究為背景而寫。

輸出如下:

《C Primer Plus》讀書筆記——數組和指針(1)

用辨別符常量表示數組大小,如果你覺得一年有13個月,隻需修改#define語句

隻讀數組,初始化時加const

《C Primer Plus》讀書筆記——數組和指針(1)

用空的方括号對數組進行初始化時,編譯器會根據清單中的數值數目來确定數組大小

運算符sizeof給出其後的對象或類型的大小(以位元組為機關)。是以sizeof days是整個數組的大小(位元組),sizeof days[0]是一個元素的大小(位元組)。相除就是數組中元素的數目。

<code>int arr[6] = {0,0,0,0,0,666}; //傳統文法</code>

<code>int arr[6] = {[5] = 666}; //C99新特性</code>

輸出如下:( VS2015的框框醜得很 )

《C Primer Plus》讀書筆記——數組和指針(1)

此程式有個缺點:會出現warning C4305“初始化: 從“double”到“const float”截斷。

原因:浮點數預設為double型。此題可無視警告,不過最好在資料後面加f,标明是float型。

指針前運用運算符*即可得到該指針所指向的對象的數值

對指針加1,等價于對指針的值加上它指向的對象的位元組大小

當且僅當在函數原型或函數定義頭的場合中,可使用int *ar代替int ar[]:

<code>int sum (int ar[], int n);</code>

任何情況下,形式int *ar都表示ar是指向int的指針。int ar[]隻有在聲明形式參量時可如此,但可提醒讀者ar不僅指向一個int數值,而且這個int是一個數組中的元素。

還有一種技巧,直接修改指針本身,使指針依次指向各個數組元素。

《C Primer Plus》讀書筆記——數組和指針(1)

函數原型

函數原型允許省略名稱,是以上面4種原型等價。

函數定義

指派

<code>ptr1 = urn;</code>

<code>ptr2 = &amp;urn[2];</code>

求/取值

<code>*ptr1</code>

取指針位址

<code>&amp;ptr1</code>

指針加減整數

<code>ptr2 + 4</code>

<code>ptr2++</code>

<code>ptr2 - 4</code>

<code>--ptr2</code>

求內插補點

通常是兩個指針指向同一個數組内不同元素,求其距離,機關是相應類型(如int)大小。

<code>ptr1 - ptr2</code>

比較

<code>ptr1 &gt; ptr2</code>

指針減指針得整數,

指針減整數得指針。

繼續閱讀