二級指標又叫雙指標。c語言中不存在引用,所以當你試圖改變乙個指標的值的時候必須使用二級指標。c++中可以使用引用型別來實現。
下面講解c中的二級指標的使用方法。
例如我們使用指標來交換兩個整型變數的值。
錯誤**如下:
一級指標
[cpp] view plaincopyprint?
#include void swap(int *a,int *b)
int main(int argc,char **ar**)
#include
void swap(int *a,int *b)
int main(int argc,char **ar**)
輸出的結果如下:before swap 2 ,3
after swap 2, 3
結果分析:不論是數值還是指標,swap函式中的引數傳遞的是總是值,所以在上述函式中即使a和b的位址已引數傳遞給swap函式,而在函式內交換的是a和b的值(main函式中a的位址和b的位址),而交換完畢,函式相應的引數從棧中彈出,並不能返回給呼叫函式,所以該swap函式中的操作是徒勞。可憐
這裡完全可以直接交換a和b的值,不過如果a和b不是乙個32位的整型變數,而是乙個複雜的資料結構,這樣做會降低效率。如下;
void swap(type *a,type *b)
void swap(type *a,type *b)
二級指標
下面是使用二級指標分配記憶體的例子
#include #include #include void memorylocate(char **ptr)
int main(int argc,char **ar**)
#include
#include
#include
void memorylocate(char **ptr)
int main(int argc,char **ar**)
當想改變指標的值的時候不妨考慮使用二維指標。
約瑟夫問題 猴子選大王 雙向指標
題目大意 有n只猴子 編號為1 n 圍成一圈,從第一只猴子開始數,數到第m只出列,直到只剩下乙隻猴子,打出這只猴子編號。分析 這道題很顯然是用指標做最簡單。額 廢話不多說 程式裡會有注釋 如下 include includestruct node struct node h,p,q 定義些臨時指標 ...
輕鬆理解vue的雙向資料繫結問題
vue介紹 vue是當前很火的一款mvvm的輕量級框架,它是以資料驅動和元件化的思想構建的。因為它提供了簡潔易於理解的api,使得我們很容易上手。vue與mvvm 如果你之前已經習慣了用jquery操作dom,學習vue.js時請先拋開手動操作dom的思維,因為vue.js是資料驅動的,你無需手動操...
雙向約瑟夫問題
約瑟夫問題是乙個經典的問題,我們不妨將這個經典問題進行擴充套件,變成乙個雙向的約瑟夫問題。已知 n 個人 不妨分別以編號 1,2,3,n 代表 圍坐在一張圓桌周圍,首先從編號為 k 的人從 1 開始順時針報數,1,2,3,記下順時針數到 m 的那個人,同時從編號為 k 的人開始逆時針報數,1,2,3...