標籤:bsp 常量 指標 使用 nbsp span 理解 return 不能
1、const指標
指向常量的指標變數,其一般形式為 "const 類型名 * 指標變數名 " 。 如下:
int a=12,b=15;const int *p=&a;int *q=&b;*p=22;//非法,試圖通過p修改a的值*q=22;//一般的指標變數可以修改,合法p=&b;//p改為指向b,合法。
2、引用
對於資料可以建立一個“引用”,它的作用是為變數起另一個別名。
int main(){int a=5;int &b=a;printf("%d\n",b);}
以上聲明了b是a的引用,即b是a的別名,這樣聲明後,a和b的作用是相同的,都代表同一變數。可以這樣去理解:通過b去引用a。在上面的聲明中,"&"是引用聲明符,不代表地址。
需要注意幾點:
- 引用是一種獨立的資料類型。對引用只有聲明,沒有定義。即必須先定義一個變數,然後對該變數建立一個引用。
- 聲明一個引用,必須同時使之初始化,即聲明它代表哪一個變數。
- 聲明另一個變數後,不能再使之作為另一個變數的引用。
- 不能建立引用數組如:
int main(){int a[5];int &b[5]=a;//錯誤,不能建立引用數組int &b=a[0];//錯誤,不能作為數組元素的別名}
- 不能建立引用的引用。
int main(){int a=3;int &b=a;int &c=b;//建立引用的引用,錯誤}
- 可以取引用的地址,如聲明b是a的引用,則&b就是變數a的地址。
int main(){int *pt;pt=&b;//把變數a的地址&a賦給指標變數pt}
3、運算子new和delete
C++提供了較簡便而功能強大的運算子new和delete來代替malloc和free函數,因此最好不用malloc和free;
int main(){int m=3,n=4,i;int **a = new int*[m]; //分配一個指標數組,將其首地址儲存在a中 、for(i = 0; i < m; i++) //為指標數組的每個元素分配一個數組 a[i] = new int [n];//動態聲明的數組,使用後需要釋放記憶體。for(i = 0;i < m; ++i)delete [] a[i];delete []a;return 0;}
C++學習總結(2)