指標的初識和解引用

2021-10-14 07:44:03 字數 1031 閱讀 1923

讓我們來 看一下以下的**

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;   //解引用, 即 給b賦值1000;

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

初識C 之指標與引用

1 what a.指標 指標可以看做是乙個特殊的變數,它是用來存放變數的位址值的。b.引用 引用的話,可以看做是給變數起的乙個別名,而不是定義乙個新變數,它與那個變數的本質是相同的,內容與位址都是一樣的。2 distinction a.引用使用時無需解引用 指標需要解引用 b.引用沒有 const,...

C語言 傳指標和解引用,野指標和空指標

乙個函式的改變要影響另乙個函式需要兩個條件 1 傳指標。2 解引用。通過交換a和b數值的例項來說明其重要性 在主函式中輸入a和b的值 int a 10 int b 20 預期輸出結果為a 20 b 10。明顯與預期結果不符。原因 沒有傳指標!具體操作為 也與預期結果不符。原因 沒有解引用。與預期相符...

C Primer 筆記四 初識指標和引用

引用 引用是某個已存在物件的別名,實現了對其他物件的間接訪問。引用本身不是物件。其定義如下 int ival 1024 int refval ival 一般初始化變數時,初始值被拷貝到新建物件中。而定義引用時,程式把引用和它的初始值繫結在一起,一旦初始化完成,將無法把引用重新繫結到另乙個物件上,因此...