C語言學習:數組方面應用

前言

(1)

一個數組包含 若干元素,每個數組元素都在內存中佔用存儲單元,也都有響應的地址。

(2)

定義一個數組:int a[5];
在c語言中,數組名(不包括形參數組名,形參數組不佔據實際的內存單元)代表:數組中首元素的地址

int * p;
p = &a[0];
所以:
p =a ;

把a數組的首元素的地址賦給指針變量p,而不是把數組a各元素的值賦給p。

(3)

可以寫成:int * p =a;
就是把這個數組的首元素的地址交給了指針變量p。
並且使用指針可以使目標程序佔內存少,運行速度快。

運算

在一定條件下允許對於指針進行加和減的運算。
這個條件就是當指針指向數組元素的時候。

(1) p+1 / p-1

指的是同一數組中的下一個元素/同一數組中的上一個元素。
執行p+1時並不是將p的值(地址)簡單的加1,而是加上一個數組元素所佔的字節數,
比如一個float 型,每個元素佔4個字節,則p+1就是使p的值加上四個字節,以使它指向
下一個元素。

p+1 就是 : p + 1*d (d表示的是一個數組元素所佔的字節數)

(2)p++ / p–

自身加減1

(3)

如果p的初值爲&a[0] , 那麼p+i 和 a +i 就是數組元素a[i] 的地址 ,就是指向數組中位置是i 的元素。

(4)

如果p 的初值爲 &a[0] ,那麼(p+i) 或 (a+i)就是p+i或a+i所指向的數組元素,
比如:* (p+5) 或 *(a + 5)就是a[5]的值。
原理上講,對於a[i] 的處理,就是按照 * (a+i) 處理,因爲,數組名 a 就是代表的是a[0] 的地址。

(5)

如果指針變量 p1 和 p2 都是指向同一數組,那麼p2 - p1 ,得到的結果就是p2 - p1 的值(地址差),去
除以數組元素的長度。 那麼這個結果的意義就是,p2 所致元素和 p1 所指元素之間相差了幾個元素。

表示

如何表示數組中一個元素的值:

(1) 下標法

如a[i] 形式,可以理解爲,就是數組a中存的值。
你直接打印a[i] 顯示的是具體的值,實際上是先找i 的地址,再去取值。

(2) 指針法

如* (p+i) ,也是取數組中i位置上的值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章