陣列是什麼

2022-02-08 06:54:43 字數 1548 閱讀 7428

陣列在c的表現是一些連續位址的指標

int a[3]

這個a 是陣列型別,但a也是個指標,是a[0]的指標,根據「一些連續位址的指標"規則

這就是陣列,至於多維陣列,他的指標仍然是連續的,只是可以[0][1]這樣取而體現了不同。

那麼這個a到底是什麼呢 還是把他理解為指標變數 最清晰,這樣在動態申請陣列記憶體的時候對於變數就更好理解

陣列a[0]的指標就是陣列a的指標就是陣列a。

malloc(sizeof(int*)*4)   申請4個int大的的記憶體(連續的)

(int*)malloc(sizeof(int*)*4) 轉換為int指標 a[0]是* 指向int

int **a = (int**)malloc(sizeof(int*)*4) a[0]是*,指向*,*指向int

那麼理解 「連續位址的指標」  再去理解鍊錶與陣列到底哪個快就更好理解了

如果順序讀取(按順序讀) 其實是沒有區別的

鍊錶是通過指標找到下乙個指標,陣列是能過指標0+n指到下乙個

但不按順序讀取時,

鍊錶乙個乙個讀的邏輯,再與陣列的指標+n計算指標位址邏輯比,明顯陣列的讀取就快了。

同樣,由於邏輯不同,鍊錶也有刪除的優點。

看起來 "按位址計算其他位置" 與 「指標指向下個位置」 是完全不同的邏輯,而且是完全無法相融合的邏輯。

甚至於細想想,這好像完全不是能一起比較的兩種方案。乙個硬體派,乙個邏輯派。

指標陣列與陣列指標

int *p1[10]; 包含指標的陣列

int (*p2)[10];  指向陣列的指標

「」的優先順序比「*」要高。

p1 先與「」結合,構成乙個陣列的定義,陣列名為p1,int *修飾的是陣列的內容,即陣列的每個元素。

那現在我們清楚,這是乙個陣列,其包含10 個指向int 型別資料的指標,即指標陣列。

至於p2 就更好理解了,在這裡「()」的優先順序比「」高,「*」號和p2 構成乙個指標的定義,指標變數名為p2,int 修飾的是陣列的內容,即陣列的每個元素。陣列在這裡並沒有名字,是個匿名陣列。那現在我們清楚p2 是乙個指標,它指向乙個包含10 個int 型別資料的陣列,即陣列指標。

乙個小技巧

(*p)[10] 

*p+1 == (*p)[1]

int *p1[10]; 包含指標的陣列

int (*p2)[10];  指向陣列的指標

「」的優先順序比「*」要高。

p1 先與「」結合,構成乙個陣列的定義,陣列名為p1,int *修飾的是陣列的內容,即陣列的每個元素。

那現在我們清楚,這是乙個陣列,其包含10 個指向int 型別資料的指標,即指標陣列。

至於p2 就更好理解了,在這裡「()」的優先順序比「」高,「*」號和p2 構成乙個指標的定義,指標變數名為p2,int 修飾的是陣列的內容,即陣列的每個元素。陣列在這裡並沒有名字,是個匿名陣列。那現在我們清楚p2 是乙個指標,它指向乙個包含10 個int 型別資料的陣列,即陣列指標。

乙個小技巧

(*p)[10] 

*p+1 == (*p)[1]

PHP陣列是什麼?

陣列能夠在單個變數中儲存多個值 cars array volvo bmw toyota echo i like cars 0 cars 1 and cars 2 陣列是乙個能在單個變數中儲存多個值的特殊變數。如果您有乙個專案清單 例如 車名字的清單 將其儲存到單個變數中,如下所示 cars1 vol...

什麼是php陣列,PHP陣列是什麼?

陣列能夠在單個變數中儲存多個值 例項 cars array volvo bmw toyota echo i like cars 0 cars 1 and cars 2 陣列是什麼?陣列是乙個能在單個變數中儲存多個值的特殊變數。如果您有乙個專案清單 例如 車名字的清單 將其儲存到單個變數中,如下所示 ...

你是什麼就是什麼!

不管到了什麼樣的年紀,我們都很難放棄對外表的一些執著吧。我一直要到遇見了乙個很特別很特別的人,從他身上,我才真正的懂了 外表之於乙個人的真正意義是什麼 去年,我買了新房子,本來是想委託我的小學同學幫我做室內設計,但是因為一些因素,他推薦了他口中比他更厲害的大師級設計師哥哥給我,他說大哥一直都做大飯店...