初步認識指標。。。。(新手)

2021-08-20 11:04:14 字數 1252 閱讀 1919

看到這樣一串**。。。。。。

int a=10;

int b=20;

int *p= &a;

*p=10;

p=&b;

*p=200;

p=&a;

int **pp=&p;

*pp=&a;

**pp=1000;

*pp=&b;

**pp=2000;

。。。。。。。。。。。。是不是一臉的懵逼,現在讓我們來看看他的每一句都是什麼意思。

開始之前我們先了解一下指標和解引用。指標(

pointer

)是程式語言中的乙個物件,利用位址,它的值直接指向(

pointsto

)存在電腦儲存器中另乙個地方的值。由於通過位址能找到所需的變數單元,可以說,位址指向該變數單元。當然這是官方語言,(通俗說;指標就是位址,可以通過它找到以它為位址的

記憶體單元

)解引用

"*"的作用是引用指標指向的變數值,引用其實就是引用該變數的位址,"解

"就是把該位址對應的東西解開,解出來,就像開啟乙個包裹一樣,那就是該變數的值了,所以稱為

"解引用"。

接下來我們來看看每一句都是什麼意思。

int *p= &a;//

定義乙個整型指標p並且

p指向了

a的位址(&

取位址)

*p=10;//

解引用,即給

a賦值10;

p=&b;//p

指向了b

的位址*p=200;//

解引用,即給

b賦值200;

p=&a;//p

指向了a

的位址int **pp=&p;// 

定義乙個整型的指標

pp並且

pp 指向了

p的位址

*pp=&a;//pp

指向了p

的位址p

指向了a

的位址即

pp指向了

a的位址

**pp=1000;

//解引用,即給

a賦值1000

;*pp=&b;//pp

指向了p

的位址p

指向了b

的位址即

pp指向了

b的位址

**pp=2000;//

解引用,即給

a賦值1000

;這裡我們需要注意一下  在定義是*p  代表的是,定義乙個指標,而其他的時間都是 解引用。

指標初步認識

int a 10 p p a 0 p a 形式 含義 p p先加1,再取p的值 p p指向的物件加1 有 p 和 p 先取 p的值,再p 指標間可以相減,不可相加,相加無實際意義。說明 是變址運算子,即a i a i 使用指標指向陣列元素注意事項 1.可以通過改變指標變數的值指向不同元素 2.不用p...

智慧型指標的初步認識

開闢了記憶體空間,必定要釋放記憶體空間,如果不釋放就會造成記憶體洩漏,引發安全問題。如果 量很少的時候,我們會記得釋放掉開闢的空間,但是如果 量過大,我們會忘記開闢的空間,那麼就需要智慧型指標來幫助我們自動釋放空間。例如 include intmain 有了智慧型指標,下面的釋放空間的語句我們就不需...

智慧型指標初步認識 自己實現

目的 new出來的物件,需要程式設計師自己釋放堆上的空間,智慧型指標就是把堆上的空間同棧一起釋放 過載 讓智慧型指標像普通指標一樣使用 分析更簡單明瞭 include using namespace std class person void showage person private int m...