5 回答

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

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

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

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