指標的指標的用法

2021-07-27 02:21:00 字數 831 閱讀 5611

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

[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 從頭到尾都是未定義的。(即,原來的指標d與拷貝的指標d'最終指向是不一樣的)

如何解決這個問題?

用指向指標的指標,把main中指標變數d 的位址傳進去。這樣在fun中分配的記憶體空間位址就存放在指標變數d 中(申請的記憶體返回的是首位址,與變數d的位址相對應)

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

摘於:

指標的用法

c 中,成員指標是最為複雜的語法結構。但在事件驅動和多執行緒應用中被廣泛用於呼叫回叫函式。在多執行緒應用中,每個執行緒都通過指向成員函式的指標來呼叫該函式。在這樣的應用中,如果不用成員指標,程式設計是非常困難的。剛遇到這種語法時也許會讓你止步不前。但你會發現,使用恰當的型別定義之後,複雜的語法是可以...

this指標的用法

1.this指標的用處 乙個物件的this指標並不是物件本身的一部分,不會影響sizeof 物件 的結果。this作用域是在類內部,當在類的非靜態成員函式中訪問類的非靜態成員的時候,編譯器會自動將物件本身的位址作為乙個隱含引數傳遞給函式。也就是說,即使你沒有寫上this指標,編譯器在編譯的時候也是加...

指標的用法

20160728 include include if 0 int sum int int int main int sum int a,int b endif if 0 int main int p a printf d n p p 1 和 的優先順序一樣的所以執行順序一樣從右到左 printf ...