c語言雙指針
Ⅰ c語言的單鏈表在開創內存空間時為什麼要用到雙重指針
你的意思是這樣嗎
List *L;
insert(&L);//初始化insert(List **L)
你問的是 初始化者戚中世銷 為什麼要雙重指針嗎?
如果是的話,那麼意思是,你想通過函數來改變L的值,但是L是指針類型,所以你要改變它的值就要傳L的地址進去,因為雙重指針的意思就是指向指針的指針,就是指針的地址,那麼**L就是指向指針L的地址,那麼通過函數調用雙重指針首返陵就能改變指針L的值。
道理就是:要傳遞變數的地址才能使變數的值發生變化.現在的變數是指針型,所以要傳指針類型的地址,也就是雙重指針。
不知道我理解對了沒
Ⅱ C語言中建立動態鏈表要用雙重指針嗎那個雙重指針有什麼作用
舉個例吧,
假如一個結構:LinkNode
初始化:Initial(LinkNode **p);//這里就是雙指橋高針
那麼在調用就這樣,
LinkNode *p;
Initial(&p);
原理就茄消晌是,如果你要通過函數來改變某個參數的值,那麼就要傳該參數的地址進去。
這里p是一個指針,所以要傳指針的地址進去,也就是一個指向指針的指針;
初始化函數Initial(LinkNode *(*p));(*p)是指針顫鋒,*(*p)就是傳指針的地址進去了,意思就這樣,不知道你聽不聽得懂。
不管動態還是靜態,只要是要通過函數來改變指針類型數據的值,就要用雙重指針。
Ⅲ C語言,聲明兩個指針
對的 這樣寫是代表兩雹碰閉個指向整吵首形的指針
比較簡便的寫法可以用 typedef定義源裂
比如
typedef int* Int_P;
Int_P a,b;
Ⅳ C語言結構體雙指針疑問
第一個動態分配了若干個struct_name_count*的空間,假設是10,也就是創檔培建了一個10個元素的數組,裡面存放的是御蠢州指針。第二個是放在循環中的,那麼就是循環10次,又為每一個指針元素分配了一個那個結構體的空間。所以總共做的事是,創建了一個指針數組,為每個指針鎮蔽分配了一個結構體的空間。
Ⅳ c語言定義雙指針
//很簡單的程序第一個"搏賀*"表示指針,用來傳地址,第二個表示字元串。這個宴虛函數表基祥派示給p的末尾加上"."
int test(char **p)
{
strcat(*p, '.');
}
Ⅵ C語言高手進關於雙重指針 多重指針的問題
1、多重指針常用於多維數組或者多維字元串的操作,有時也升純用於函數參數傳遞;
2、指針是C語言的一個重要知識點,你可以簡單理解為地址。多重指針需要通過多次定址才能找到實際的值。這里一個示例:
# include<stdio.h>
int main()
{
unsigned int x=0x1234;
unsigned int *p1=NULL;
unsigned int **p2=NULL;
unsigned int ***p3=NULL;
p1=&x;
p2=&p1;
p3=&p2;
printf("\n x=0X%X, &x=:0X%X",x,&x);
printf("\n *p1=0X%X, p1=:0X%X, &p1=:0X%X",*p1,p1,&p1);
printf("\n **p2=0X%X, *p2=:0X%X, p2=:0X%X, &p2=0X%X",**p2,*p2,p2,&p2);
printf("\n***p3=0X%X, **p3=:0X%X, *p3=:0X%X, p3=:遲清0X%X, &p3=:0X%X",***p3,**p3,*p3,p3,&p3);
return 0 ;
}
顯示結果:
x=0X1234, &x=:0X6C56C298
*p1=0X1234, p1=:0X6C56C298, &p1=:0X6C56C290
**p2=0X1234, *p2=:0X6C56C298, p2=:0X6C56C290, &p2=0X6C56C288
***p3=0X1234, **p3=:0X6C56C298, *p3=:0X6C56C290, p3=:0X6C56C288, &p3=:0X6C56C280
所有類型變數都可以通過&獲得該變數在內存中的地址,從以上示例看出
變數x在內存中的地址為:0X6C56C298
指針變數p1的地址為:0X6C56C290
指針變數p2的地址為:0X6C56C288
指針變數p3的地址為:0X6C56C280
以上變數按照定義先後順序在內存中從高地址到低地址連續存儲的,每個變數占據8個位元組空間。
其中p3的值(也就是0X6C56C280這個地址的內存中存放的數據)為p2的地址。
p2的值(也就是0X6C56C288這個地址的內存中存放的數據)為p1的地址。
p1的值(也就是0X6C56C290這個地址的內存中存放的數據)為x的地址。
要取得最終的0x1234這個數據,幾重指針前面就有幾個*,比如***p3就表示0x1234這個具體的值。只要少吵旦咐一個*,那麼獲得的就是地址。