1.指針的用處
int a=3; int *x = &a;
以上是一個指針的賦值,指針變量x作為變量a的索引。
2.指針的指針
首先要搞明白一個概念,指針也是一個變量,也會占用存儲空間。通過我們*p指向的是一份普通類型的數據,例如int、double、char等,但也可以指向一份指針類型的數據,例如int *、double*、char*等。那么如果一個指針指向的是另一個指針,那么我們就稱它為二級指針,或者指向指針的指針。
假設有一個 int 類型的變量 a,p1是指向 a 的指針變量,p2 又是指向 p1 的指針變量,它們的關系如下圖所示:

int a=100; int *p1=&a; int **p2=&p1;
3.指針的指針的應用場景
如果要在一個函數的參數中改變一個指針的值,就只能傳這個指針的指針給這個函數。
int *p eg1: void f(int **pp) { *pp++; } int main(void) { f(&p); } eg2: void f(int *pp) { *pp++; } int main(void) { *pp++; }
以上例程想要在函數f中對p這個指針增量(是地址增量,而不是指針所指向內容+1)。那么只能用例程1中。
比較明顯的一個作用,就是減少函數傳參。不然還需要傳一個*index,來指示函數調用后的內存偏移量,傳**進去,函數調用后,指針就自動指向偏移后的地址了。
