指針

 

 指針圖解:數組

a[i]與*(a+i)兩者是等價的,當對指針進行一個加整數i操做時,其實獲得了一個地址。函數

 

注意函數調用棧與堆的區別,見程序的內存佈局此篇文章佈局

調用函數實現值的交換,區別以下:指針的地址指向做用一目瞭然。spa

 

 

 

數組名,實際上就是數組的首地址,表示數組在內存中的起始位置。.net

指向指針的指針,一般用來訪問指針數組3d

傳遞 函數參數和返回值的三種方法:指針

  • 傳值
  • 傳指針
  • 傳引用

code舉例:code

 

 1 int FuncByValue(int  x)
 2 {
 3     x = x + 1;
 4     return x;
 5 }
 6 
 7 void FuncByPointer(int* p)
 8 {
 9     *p = *p + 1;
10 }
11 
12 
13 void FuncByReference(int& r)     此處引用r和變量n就是同一個數據 14 {
15     r = r + 1;
16 }
17 
18 int main()
19 {
20     
21 
22     int n = 0;
23     cout << "n的初始值,n=" << n << endl;
24 
25     //調用傳值
26     FuncByValue(n);
27     cout << "傳值,n= " << n << endl;
28 
29     //調用傳指針
30     FuncByPointer(&n);
31     cout << "傳指針n=" << n << endl;
32 
33     //調用傳引用
34     FuncByReference(n);
35     cout << "傳引用,n= " << n << endl;


n的初始值,n=0
傳值,n= 0
傳指針n=1
傳引用,n= 2blog

 

 

 

在能夠的狀況下,應儘可能使用傳引用來傳遞函數參數,效率高,形式天然,結合了兩者的優勢。內存

相關文章
相關標籤/搜索