C 指標變數

2021-09-25 23:58:39 字數 4347 閱讀 5323

a detailed introduction to c++ pointer variable, maybe helpful!!! ?

guderian出品

想獲得更佳閱讀體驗?戳

對指標變數的型別說明,一般形式為:

型別說明符 *變數名;

其中,*表示這是乙個指標變數,變數名即為定義的指標變數名,型別說明符表示該指標變數所指向的變數的資料型別

int a = 3;

定義了變數a,是int型的,值為3。記憶體中有一塊記憶體空間是放a的值,對a的訪問操作就是直接到這個記憶體空間訪問。記憶體空間的位置叫位址,存放3的位址可以用取位址操作符&a運算得到:&a

int *p = null;

定義了乙個指標變數pp指向乙個記憶體空間,裡面存放的是乙個記憶體位址。現在賦值為null(其實就是0,表示特殊的空位址)。

即把a變數的記憶體空間位址(比如:***)給了p。顯然,直接對p訪問,操作的是位址。通過這個位址間接地操作,才是整數3。p的間接操作要使用指標操作符「*」,即*p的值才是3。設有指向整型變數的指標變數p,如要把整型變數a的位址賦予p可以有以下兩種方式:

①指標變數初始化的方法

int a; int *p = &a;

②賦值語句的方法

int a; int *p; p = &a;

不允許把乙個數賦予指標變數,故如下的賦值是錯誤的:int *p;p = 1000;。被賦值的指標變數前不能再加「*」說明符,故如下的賦值也是錯誤的:*p = &a;

指標的幾個相關操作說明表

說明樣例

指標定義:型別說明符 *指標變數名int *p;

p = &a;

間接運算子:**p = 20;

指標變數直接訪問的是記憶體位址

cout<

間接訪問的才是儲存型別的值

cout結果是:20

指標變數同普通變數一樣,使用之前不僅要定義說明,而且必須被賦值具體的值,未經賦值的指標變數不能使用。如定義了int a; int *p = &a;,則*p表示p指向的整型變數,而p中存放的是變數a占用單元的起始位址,所以*p實際上訪問了變數a,也就是說*p$ \longleftrightarrow $a

【例1】輸入兩個不同的數,通過指針對兩個數進行相加和相乘,並輸出。

#include

#include

using

namespace std;

intmain()

輸出:

a =

10, b =

20 s =

30, t =

200

一般的,指標(int *p)與普通變數(int a)的對應關係為:

指標變數

普通變數

p&a

*pa

*p = 3a = 3

以下為指標的一些運算:

指標的幾個初始化操作說明表

方法說明

int *p = null;null是特殊的位址0,叫零指標

int a; int *p = &a;p初始化為a的位址

int *p = new(int);申請乙個空間給p*p內容不確定

要強調的是,對於定義的區域性指標變數,其內容(位址)是隨機的,直接對它操作可能會破壞程式或系統記憶體的值,引發不可**的錯誤。所有程式設計中指標變數要保證先初始化或賦值,給予正確的位址再使用,避免產生*野指標

【例2】輸入n個整數,使用指標變數訪問輸出。

#include

using

namespace std;

int a[

101]

, n;

intmain()

return0;

}

輸入:

421

60

輸出:

216

0

【說明】p++的意思是「廣義的加1」,不是p的值(位址)加1,而是根據型別int增加sizeof(int),即剛好「跳過」乙個整數的空間,達到下乙個整數。

類似的:

p--就是向前「跳過」乙個整數的空間,達到前乙個整數。

(p + 3)就是指向後面第3個整數的位址。

有時候,乙個指標根據不同的情況,指向的內容是不同型別的值,我們可以先不明確定義它的型別,只是定義乙個無型別的指標,以後根據需要再用強制型別轉換的方法明確它的型別。

【例3】無型別指標運用舉例。

#include

using

namespace std;

int a =10;

double b =

3.5;

void

*p;int

main()

輸出:

10

3.5

【說明】必須明確p指向的空間的資料型別,型別不一樣的不僅空間大小不相同,儲存的格式也不同。如果把cout<

【例4】雙重指標運用舉例。

#include
using

namespace std;

int a =10;

int*p;

int*

*pp;

//定義雙重指標

intmain()

輸出:

10=10

=10

【說明】多重指標可以多次「間接」訪問資料;演算法競賽上主要的應用是*動態的多維陣列,功能十分強大!!!

以上就是c++指標變數的用法說明,喜歡的話別忘了點讚收藏?!

我的部落格:

C 指標 指標變數

三 和 小結 四 指標變數的運算 指標變數 存放指標的變數,本質上是乙個整數。指標所指向的值,可以是任何型別資料,如陣列 字串 函式或普通變數 指標變數。定義指標變數與定義普通變數非常類似,不過要在變數名前面加星號 datatype name 或者 datatype name value 表示這是乙...

c 指標變數

指標是c語言的精華部分,通過利用指標,我們能很好地利用記憶體資源,使其發揮最大的效率。有了指標技術,我們可以描述複雜的資料結構,對字串的處理可以更靈活,對陣列的處理更方便,使程式的書寫簡潔,高效,清爽。但由於指針對初學者來說,難於理解和掌 握,需要一定的計算機硬體的知識做基礎,這就需要多做多練,多上...

c語言指標 指標和指標變數

指標是c語言中乙個重要的概念,也是c語言的重要角色。可以說指標是c的精華所在,學習指標雖然不易,但是只要肯花上時間去反覆的理解和實踐,就一定可以很好的掌握它。一 指標是什麼 指標到底是什麼?我們先舉乙個例子。假設我們在火車站 附近開了一家賓館,這家賓館有三千多間屋子,為了方便管理,我們給每個房間都加...