C 學習之路(37) 指向指標的指標的作用

2021-08-17 02:52:25 字數 840 閱讀 4108

這篇文章主要是介紹 指向指標的指標 的一種用法

所以這裡不談指標或指向指標的指標他們的基礎

直接上**(用途:使用乙個函式動態申請記憶體,並賦值。跳出呼叫函式後輸出賦值內容)

[cpp] 

#include

#include

typedef struct data  

data;  

void fun(data *p);  

int main()  

void fun(data *p)  

我建議你直接執行看看結果,你會發現執行出錯,在這裡我建議你先思考再往下看

那麼再看看下面的這段**:

[cpp]  

#include

#include

typedef struct data  

data;  

void fun(data **p);     //這裡改動了  

int main()  

void fun(data **p)     //這裡改動了  

仔細看就不難發現改動後的**使用了指向指標的指標

為什麼直接使用指標會不行呢?www.2cto.com

因為第一段**裡 void fun(data *p) 中引數是按值傳遞。呼叫函式自動定義乙個臨時變數儲存了實參的拷貝,那麼在fun中動態分配的記憶體,根本就不是在main函式中指標變數d 所指向的,main中指標變數d 從頭到尾都是未定義的。

如何解決這個問題?

用指向指標的指標,把main中指標變數d 的位址傳進去。這樣在fun中分配的記憶體空間位址就存放在指標變數d 中

說到這裡,指向指標的指標其中的乙個作用就不言而喻了

指標和引用(4)指向指標的指標

1 在程式中可以宣告指向任何資料型別的指標,指標也可以指向指標型別,成為指向指標的指標。下面是乙個使用例子 1 int a 10,b 20 2 int q a 3int p q 4 p 30 2 如果想通過指標在被調函式中修改主調函式的變數,必須將主調函變數 務必確定該變數的型別,有時候可能變數本身...

C 指標2 指向陣列的指標和指標陣列

7.4指向陣列元素的指標 宣告與賦值 例 int a 10 pa pa a 0 或 pa a p1 通過指標引用陣列元素,經過上述宣告及賦值後 pa就是a 0 pa 1 就是a 1 pa i 就是a i a i pa i a i pa i 都是等效的。不能寫 a 不能給陣列名賦值或者試圖改變其值,因...

C語言學習(六)指標4 指向函式的指標

1.乙個函式在編譯時被分配乙個入口位址。這個函式的入口位址就稱為函式的指標。可以用乙個指標變數指向函式,然後通過該指標變數呼叫此函式。例如 比較2個數字,返回大的數字 void main int swap int a,int b 說明 a 指向函式的指標變數的定義形式為 返回型別 指標變數名 引數列...