淺談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的更多內容!    

推薦閱讀: