C語言學習筆記之指向陣列元素的指標和指向陣列的指標

2021-06-28 15:58:23 字數 455 閱讀 2683

現有如下**:

執行結果為:

通過這個例子,我個人的理解是:

雖然列印陣列a和&a結果是相同的位址值,但所代表的意義是不同的。陣列名a代表陣列第乙個元素的位址,指標p和陣列名a其實是指向陣列元素的指標。指標pa是指向陣列a這個整體的指標,p和pa是不一樣的。也就是說p+i是按照陣列元素的大小向前移動i,而pa+i是按照整體陣列的大小向前移動。

*a代表了首元素,因此sizeof(*a)顯示的是元素大小;*(&a)則是去陣列a的位址後,代表了該位址為起點的整個陣列,因此sizeof(*(&a))顯示的是陣列的大小。

C語言學習筆記之陣列(一)

陣列是一組有序資料的集合,陣列依靠陣列名和下標來唯一確定陣列中的元素,陣列中的每乙個元素都屬於同一種資料型別。在理解陣列之前回憶一下變數的定義過程,比如定義整型資料,int a 在執行到這句話的時候,在記憶體裡分配乙個4個位元組大小的記憶體空間用來存放資料,而陣列便是開闢一段連續的空間來存放一組資料...

c語言學習筆記之陣列(二)

如果一維陣列可以理解為乙個佇列,那麼二維陣列便是乙個矩陣,有行數有列數。二維陣列的定義和一維陣列類似 型別說明符 陣列名 常量表示式 常量表示式 比如 float a 3 4 b 5 10 定義a為3行4列的陣列,b為5行10列的陣列。所以在定義時,第乙個方括號內表示行,第二個方括號表示列。二位陣列...

C語言學習筆記之陣列(三)

定義字元陣列和數值型的陣列格式是一樣的,資料型別為char型。如char a 10 這就定義了長度為10的陣列,每個元素都存放乙個字元。對字元的初始化,最容易理解的是用 初始化列表 把各個字元一次賦給陣列中的元素。例如 char a 10 把這十個字元一次賦給a 0 a 9 如果定義字元陣列不進行初...