《指針的指針的實際應用場景》


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,來指示函數調用后的內存偏移量,傳**進去,函數調用后,指針就自動指向偏移后的地址了。  

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM