什麼是指標?
在電腦科學中,指標(pointer)是程式語言中的乙個物件,利用位址, 它的值直接指向(points to)存在電腦儲存器中另乙個地方的值。由於通過位址能找到所需的變數單元,可以說,位址指向該變數單元。因此,將位址形象化的稱為「指標」。意思是通過它能找到以它為位址的記憶體單元。
為什麼存在指標?
將計算機的記憶體分成很多個小的單元,每個單元都對應乙個獨一無二的位址,這樣就一塊位址標示一塊空間,方便管理。
指標的大小
指標和指標型別
我們都知道,變數有不同的型別,整形,浮點型等。那麼指標有沒有型別呢?
int a = 0;
p = &a;
要將&a(a的位址)儲存到p中,p是乙個指標變數,儲存乙個整形變數的位址。我們稱p為整形指標。
二級指標
指標變數也是變數,是變數就有位址,那指標變數的位址存放在那裡呢?
對於二級指標的運算有:
指標表示式解析
當有**:
char ch = 'a';
char *cp = &ch;
下面**什麼意思?能否做左值?能否做右值?
&ch;//不可左值可右值。&ch得到的是ch的位址,是乙個常量。
cp;//既可左值也可右值。字元指標,存的是&ch(ch的位址)。
&cp;//不可左值可右值。&cp是cp的位址,是乙個常量。
*cp+1;//可右值不可左值。因為*優先順序高於+所以*cp先結合,再加1就成了乙個值而不是一塊空間。
++cp;//不可左值,++cp只是將cp中的內容加一,是乙個位址常量。
cp++;//不可作為左值。
*++cp;//可左值可右值,表示指向ch後的下一塊空間。
*cp++;//可左值,++優先順序高於*,後置++cp先與*結合,表示指向a的下一塊空間。
++*cp;//不可左值可右值,對*cp進行前置++操作,表示ch中的內容加一。
(*cp)++;//不可左值可右值,對*cp進行後置++操作,是乙個表示式。
++*++cp;//可右值不可左值,cp先與最近的++結合,指向下一塊空間,在進行解引用,再結合++,//對空間中的值加一。
++*cp++;//可右值不可左值,先對ch加一,運算結束後cp加一指向下一塊空間。
指標之 一級二級多級指標
指標,c語言永恆的話題。關於指標,在 c和指標 上是這樣形容的,指標就是位址的另外乙個叫法。所以我們要明白,指標和指標變數的區別,指標就是位址,指標變數是存放指標的變數,即指標變數存放的是位址,我們通過間接訪問符可以得到該位址的內容。但是,在一般情況下,我們都把指標變數說成指標這樣的簡稱。例如 vo...
指標之 一級二級多級指標
from 指標,c語言永恆的話題。關於指標,在 c和指標 上是這樣形容的,指標就是位址的另外乙個叫法。所以我們要明白,指標和指標變數的區別,指標就是位址,指標變數是存放指標的變數,即指標變數存放的是位址,我們通過間接訪問符可以得到該位址的內容。但是,在一般情況下,我們都把指標變數說成指標這樣的簡稱。...
指標之 一級二級多級指標
指標,c語言永恆的話題。關於指標,在 c和指標 上是這樣形容的,指標就是位址的另外乙個叫法。所以我們要明白,指標和指標變數的區別,指標就是位址,指標變數是存放指標的變數,即指標變數存放的是位址,我們通過間接訪問符可以得到該位址的內容。但是,在一般情況下,我們都把指標變數說成指標這樣的簡稱。例如 vo...