C語言中connst用法
阿新 • • 發佈:2020-08-02
1、const一般用來定義只讀變數,這個變數的之只能在初始化時賦值,如果初始化時沒有賦值,則預設為0。如果在其他地方試圖更改此值,編譯會報錯。如:
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;
2、const 和指標
const和指標有以下幾種書寫方式:
- const int *a
指標指向的內容不可變,但指標可以改變
#include<stdio.h>
int main()
{
int w=1;
int q=2;
const int *a=w;
a=&q;
++a;
++*a;
printf("%d/n",*a);
}
執行結果:
con1.c: In function ‘main’:
con1.c:10:9: error: increment of read-only location ‘*a’
- int const *a
指標指向的內容不可變,指標可以改變。
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;
^
- int *const a
const修飾了a, a本身是一個常量,而a還是一個指標,結果就是一個指標常量,指標不可變,但指標內容可變。
#include<stdio.h> int main() { int w=1; int q=2; int *const a=&w; ++a; ++*a; }
執行結果:
con1.c: In function ‘main’:
con1.c:8:9: error: increment of read-only variable ‘a’
++a;