天天看點

指針和指針變量的差別

文章目錄

    • 記憶體
    • 為什麼存在位址
    • 左值與右值
    • 指針和指針變量
      • 什麼是指針
      • 什麼是指針變量
      • 如何使用

首先引入一些概念

記憶體

記憶體是電腦上特别重要的存儲器,計算機中所有程式的運作都是在記憶體中進行的。

是以為了有效的使用記憶體,就把記憶體劃分成一個個小的記憶體單元,每個記憶體單元的大小都是一個位元組。

為了能夠有效的通路到記憶體的每個單元,就給記憶體單元進行了編号,這些編号被稱為該記憶體單元的位址。

為什麼存在位址

為了提高效率,快速辨別與定位。

左值與右值

空間 對應 左值

例:(對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(空間)
           

大部分使用的都是指針變量,但是書中經常簡稱定義一個指針,這種說法并沒有錯,這時通過上下文,通過左值和右值進行判斷。

指針和指針變量不一樣,嚴格來說,定義一個指針是個錯誤的說法。但是,在日常生活中,還是将指針和指針變量混在一起使用,因為大部分人和書将指針和指針變量混在一起。既可以說定義一個指針,也可以說定義一個指針變量,它到底是什麼需要自己判斷。

繼續閱讀