1. 程式人生 > >常量的三種定義方式和static在c語言中的三種修飾

常量的三種定義方式和static在c語言中的三種修飾

c語言的常量在執行期間為固定值,在定義後無法被修改
常量可以是任何的資料基本型別,可以為整形,浮點常量,字元和字串常量
1,使用const關鍵字
2, 使用巨集定義
3,使用列舉常量

 

列舉:

 1 #include<stdio.h>
 2 int main(){
 3     enum sex{
 4         male,
 5         female,
 6         unknown,
 7     };
 8     printf("%d\n%d\n%d\n", male, female, unknown);
 9     return 0;
10 }

巨集定義:

1 #define i 5

const關鍵字修飾的常量不可被再修改,例如:

1 const int i=6;

 

 

 


 

 

在vs同一個工程下建立兩個.c格式的檔案:

在第一個.c檔案下寫:

1 static int g_val = 100;

 

在第二個.c檔案下寫上

 1 #include <stdio.h>
 2 #include<stdlib.h>
 3  extern int g_val;
 4 
 5
int main(){ 6 /*int g_val = 30;*/ 7 8 printf("%d\n", g_val); 9 system("pause"); 10 return 0; 11 }

執行結果如下:

當去掉第一個程式的static時候:

1 int g_val = 100;

再次執行第二個程式顯示編譯成功。

這是因為:

 static作用於同一個工程中2.c檔案內的int g_val;使之從全域性變數變為了區域性變數,從而在1.c檔案中編譯器無法打印出g_val
另外在同一個工程中的不同的.c檔案中如果需要引用另一個.c中的變數,需要使用extern在進入主要函式之前
c語言static的作用: 1,修飾區域性變數,改變變數的生命週期,變成了整個程式; 2,修飾全域性變數,改變變數的作用域,變成了當前檔案; 3,修飾全域性函式,改變函式的作用域,變成了當前檔案 好處: 防止一個工程下成百上千個檔案難免有對同一個變數的相同命名,只作用於當前檔案,保證了程式的安全性。