一、const通常用來定義只讀變量,這個變量的之只能在初始化時賦值,若是初始化時沒有賦值,則默認爲0。若是在其餘地方試圖更改此值,編譯會報錯。如:spa
1 #include<stdio.h> 2 int main() 3 { 4 const int a; 5 a+=2; 6 printf("%d\n",a); 7 return 0; 8 9 } 10 11 12 運行結果: 13 con.c: In function ‘main’: 14 con.c:5:3: error: assignment of read-only variable ‘a’ 15 a+=2;
二、const 和指針指針
const和指針有如下幾種書寫方式:
指針指向的內容不可變,但指針能夠改變code
#include<stdio.h>
int main()
{
int w=1;
int q=2;
const int *a=w;
a=&q;
++a;
++*a;
printf("%d/n",*a);
}
運行結果:blog
con1.c: In function ‘main’:
con1.c:10:9: error: increment of read-only location ‘*a’
++*a;rem
指針指向的內容不可變,指針能夠改變。io
1 #include<stdio.h> 2 3 int main() 4 { 5 int w=1; 6 int q=2; 7 int const *a=q; 8 a=&w; 9 // int *const a=&w; 10 // const* int a; 11 // const int *a; 12 13 ++a; 14 ++*a; 15 16 }
運行結果:編譯
con1.c: In function ‘main’: con1.c:14:2: error: increment of read-only location ‘*a’ ++*a; ^
const修飾了a, a自己是一個常量,而a仍是一個指針,結果就是一個指針常量,指針不可變,但指針內容可變。
function
#include<stdio.h> int main() { int w=1; int q=2; int *const a=&w; ++a; ++*a; }
運行結果:class
con1.c: In function ‘main’:
con1.c:8:9: error: increment of read-only variable ‘a’
++a;變量