這篇文章主要是介紹 指向指標的指標 的一種用法
所以這裡不談指標或指向指標的指標他們的基礎
直接上**(用途:使用乙個函式動態申請記憶體,並賦值。跳出呼叫函式後輸出賦值內容)
[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 指向函式的指標變數的定義形式為 返回型別 指標變數名 引數列...