淺談C語言的變量和常量
生活中的有些值是不變的(比如:圓周率,性別,身份證號碼,血型等等)
有些值是可變的(比如:年齡,體重,薪資)。
不變的值C語言中用常量的概念來表示,變的值C語言中用變量來表示
//定義變量的方法: //類型 + 名字 int age = 150; float weight = 45.5f; char ch = 'w'
變量的分類
1.全局變量
2.局部變量(補充:隻要放在{ }裡的都是局部變量)
例如:
int a = 10;//全局變量 —— 定義在大括號外部 int b = 20;//全局變量 int main() { int a = 100; printf("a = %d\n", a);//局部變量 —— 定義在大括號內部 printf("b = %d\n", b);//局部變量 return 0; }
以上代碼的輸出結果為:
a = 100
b = 20
那麼為什麼不會是a = 10 b = 20 呢?
這是因為全局變量與局部變量名字沖突的情況下,局部優先!但在xdm寫代碼的時候不建議將局部變量與全局變量命名成一樣的
在代碼中這兩個變量該怎麼使用呢?下面我來舉個栗子
int main() { int num1 = 0;//創建變量num1 int num2 = 0; int sum = 0; //輸入變量值 scanf("%d %d",&num1,&num2);//&取地址操作符 //相加 sum = num1 + num2; //打印輸出 printf("sum = %d\n",sum); return 0; }
變量的作用域和生命周期
作用域
作用域(scope)是程序設計概念,通常來說,一段程序代碼中所用到的名字並不總是有效/可用的而限定這個名字的可用性的代碼范圍就是這個名字的作用域。
簡單來講:一個變量哪裡可以使用,哪裡就是他的作用域
1. 局部變量的作用域是變量所在的局部范圍,例如:
int main() { { int a = 0; printf("%d\n", a); } printf("%d\n", a); return 0; }
a的作用域就是上圖框選部分
2. 全局變量的作用域是整個工程(跨文件也可以使用),例如:
int a = 0; void test() { printf("test::%d\n", a); } int main() { test(); printf("main::%d\n", a); return 0; }
生命周期
變量的生命周期指的是變量的創建到變量的銷毀之間的一個時間段
1. 局部變量的生命周期是:進入作用域生命周期開始,出作用域生命周期結束。
2. 全局變量的生命周期是:整個程序的生命周期。
常量
C語言中的常量分為以下以下幾種:
字面常量(直接寫出來的字面值)
例如:
(1). 3.14——浮點型常量
(2). 20——整形常量
(3). ‘a’——字符常量
(4). “abcd”——字符串常量
2.const 修飾常變量
const是C語言裡的一個關鍵字
作用:具有常屬性的意思,不能改變變量的值
例如:
int main() { int num = 10; printf("%d\n", num); num = 20;//修改 printf("%d\n", num); return 0; }
在這裡的輸出結果為10和20,而下面
int main() { const int num = 10; printf("%d\n", num); return 0; }
如果這樣寫則num的值不可改變
const 修飾的常變量
3.#define 定義的標識符常量
#define定義的東西為常量
#define M 100 int main() { int a = M; printf("%d\n", a); return 0; } //輸出結果為100
4.枚舉常量
枚舉——一一列舉,例如:性別,三原色等
枚舉關鍵字:enum
enum Colour { RED,//0 GREEN,//1 BLUE//2 }; int main() { enum Colour s = RED; printf("%d %d %d\n", RED, GREEN, BLUE); return 0; } //輸出結果0 1 2 //枚舉常量默認從0開始,依次向下遞增1
總結
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!