const和指針相結合的四種情況
四種情況分別如下:
int cons *p p本身不是常量,p指向的地址的數據為常量
const int *p p本身不是常量,p指向的地址的數據為常量
int * const p p是常量,p指向的地址空間內不是常量
const int * const p p是常量,p指向的地址空間也是常量
總結:當const在*左邊是,修飾的是p指向的地址的數據,當const在*右邊是,修飾的p
當用const修飾一個變量時,在gcc下,依然可以通過指針修改變量的值
int main(void)
{
const int a = 5;
//a = 6; // error: assignment of read-only variable ‘a’
int *p;
p = (int *)&a; // 這裡報警高可以通過強制類型轉換來消除
*p = 6;
printf("a = %d.\n", a); // a = 6,結果證明const類型的變量被改了
return 0;
}