1、指針是const數組
含義:表示一旦獲得了某個變量的地址,不能再指向其餘變量函數
示例:指針
int *const q = &i;//q是const變量
*q = 26;//OKco
q++;//ERROR參數
解釋:q只能指向i,不能再指向其餘,可是它指向的變量的值是能夠改變的,也就是說,i和*p能夠被賦予新的值const
2、所指是const
含義:表示不能經過這個指針去修改那個所指的變量
示例:
const int *p = &i;(*p是const)
*p = 26;//ERROR!
i = 26;//OK
p = &j;//OK
解釋:p,i不是const,i和p都可以改變,可是*p是const,也就是說不能經過p去修改i的值
如何區分:const是在「*」以前仍是以後
在以前:所指是const
在以後:指針是const
例如:
int i;
const int *p1 = &i;
int const *p2 = &i;
int *const p3 = &i;
第一個和第二相同,均表示所指是const;第三個表示指針是const !
3、數組與const
示例:
const int a[ ] = {1,2,3,4,5};
數組變量已是const的指針,這裏的const代表數組的每一個單元都是const int ,也就是說a[0],a[1],a[2],a[3],a[4]的值均不可改變,因此必須經過初始化賦值;
因爲把數組傳入函數時傳遞是地址,因此那個函數內部是能夠修改數組的值,爲了保證數組不被函數破壞,能夠設置參數爲const。好比: int sum(const int a[ ],int length)