5 回答

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
**p :二級(jí)指針,表示p所指向的地址里面存放的是一個(gè)指向類(lèi)型的指針。
*p:一級(jí)指針,表示p所指向的地址里面存放的是一個(gè)類(lèi)型的值。
擴(kuò)展資料:
指針變量可以進(jìn)行加減運(yùn)算,例如p++、p+i、p-=i。指針變量的加減運(yùn)算并不是簡(jiǎn)單的加上或減去一個(gè)整數(shù),而是跟指針指向的數(shù)據(jù)類(lèi)型有關(guān)。
給指針變量賦值時(shí),要將一份數(shù)據(jù)的地址賦給它,不能直接賦給一個(gè)整數(shù),例如int *p = 1000;是沒(méi)有意義的,使用過(guò)程中一般會(huì)導(dǎo)致程序崩潰。
使用指針變量之前一定要初始化,否則就不能確定指針指向哪里,如果它指向的內(nèi)存沒(méi)有使用權(quán)限,程序就崩潰了。對(duì)于暫時(shí)沒(méi)有指向的指針,建議賦值NULL。
兩個(gè)指針變量可以相減。如果兩個(gè)指針變量指向同一個(gè)數(shù)組中的某個(gè)元素,那么相減的結(jié)果就是兩個(gè)指針之間相差的元素個(gè)數(shù)。
數(shù)組也是有類(lèi)型的,數(shù)組名的本意是表示一組類(lèi)型相同的數(shù)據(jù)。在定義數(shù)組時(shí),或者和 sizeof、& 運(yùn)算符一起使用時(shí)數(shù)組名才表示整個(gè)數(shù)組,表達(dá)式中的數(shù)組名會(huì)被轉(zhuǎn)換為一個(gè)指向數(shù)組的指針。

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
**p表示p也表示地址,簡(jiǎn)單的說(shuō),這個(gè)地址對(duì)應(yīng)的存儲(chǔ)單元存儲(chǔ)的數(shù)也是一個(gè)地址,而不是數(shù)值,而這個(gè)被存儲(chǔ)的地址對(duì)應(yīng)的存儲(chǔ)單元存儲(chǔ)的數(shù)據(jù)才是真正的相應(yīng)類(lèi)型的數(shù)值!
例如:
int i=10; //定義了一個(gè)整型變量
int *p=&i; //定義了一個(gè)指針指向這個(gè)變量
int **p1=&p; //定義了一個(gè)二級(jí)指針指向p指針
那么取出10的值方式為:
printf(“i=[%d]\n”,*p);
printf(“i=[%d]\n”,**p1);
擴(kuò)展資料:
指針與數(shù)組關(guān)系
指針數(shù)組:就是一個(gè)由指針組成的數(shù)組,那個(gè)數(shù)組的各個(gè)元素都是指針,指向某個(gè)內(nèi)存地址?!har *p[10];//p是一個(gè)指針數(shù)組
數(shù)組指針:數(shù)組名本身就是一個(gè)指針,指向數(shù)組的首地址。注意這是一個(gè)常數(shù)。
example:
char (*p)[10]//p是一個(gè)數(shù)組指針
函數(shù)指針:本身是一個(gè)指針,指向一個(gè)函數(shù)入口地址,通過(guò)該指針可調(diào)用其指向的函數(shù),使用函數(shù)指針可實(shí)現(xiàn)回調(diào)函數(shù)。

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
char p表示p的類(lèi)型是字符。
char *p表示p的類(lèi)型是字符指針,指向字符類(lèi)型的變量。
char **p表示p的類(lèi)型是字符指針的指針,指向字符指針的變量。

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊
例如 int **p ;
解釋?zhuān)?br/>int *p;則p是一個(gè)指向int型的變量的地址, p是地址;
*p指的是內(nèi)容
而int **p;p指的是一個(gè)地址,p放的是*p的地址, *p指的是存放int 的地址.
- 5 回答
- 0 關(guān)注
- 981 瀏覽
添加回答
舉報(bào)