文章目錄
-
- 記憶體
- 為什麼存在位址
- 左值與右值
- 指針和指針變量
-
- 什麼是指針
- 什麼是指針變量
- 如何使用
首先引入一些概念
記憶體
記憶體是電腦上特别重要的存儲器,計算機中所有程式的運作都是在記憶體中進行的。
是以為了有效的使用記憶體,就把記憶體劃分成一個個小的記憶體單元,每個記憶體單元的大小都是一個位元組。
為了能夠有效的通路到記憶體的每個單元,就給記憶體單元進行了編号,這些編号被稱為該記憶體單元的位址。
為什麼存在位址
為了提高效率,快速辨別與定位。
左值與右值
空間 對應 左值
例:(對a來說)
a = 20; //當把值賦給a時,是給a的空間寫入20。
内容 對應 右值
例:(對a來說)
b = a; //把a的内容賦給b。
指針和指針變量
什麼是指針
指針就是位址,位址就是指針。
什麼是指針變量
指針變量是變量。定義一個指針變量,是在記憶體中開辟一個空間,該空間裡面存放位址。
如何使用
指針更多強調的是内容(對應右值),指針變量更多強調的是空間(對應左值)。判斷一個指針和一個指針變量要通過判斷它是左值還是右值。
int *p = &a; //定義了指針變量p
p = &b; //将b的位址放在p的空間
int *q = p; //定義了指針變量q,把p的内容(位址)給了q(空間)
大部分使用的都是指針變量,但是書中經常簡稱定義一個指針,這種說法并沒有錯,這時通過上下文,通過左值和右值進行判斷。
指針和指針變量不一樣,嚴格來說,定義一個指針是個錯誤的說法。但是,在日常生活中,還是将指針和指針變量混在一起使用,因為大部分人和書将指針和指針變量混在一起。既可以說定義一個指針,也可以說定義一個指針變量,它到底是什麼需要自己判斷。