1. 程式人生 > 實用技巧 >C語言中connst用法

C語言中connst用法

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’

++*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;