C語言之一級指標與二級指標剖析

2021-08-08 16:55:07 字數 1574 閱讀 2446

什麼是指標?

在電腦科學中,指標(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...