关于C语言的学习笔记#2

变量的作用域和生命周期

作用域:一般来说,一段程序代码中的变量并不总是有效的/可用的。该变量的可用范围即是该变量的作用域。
变量的作用域是与全局变量/局部变量相联系的。
对于全局变量来说,其作用域包括整个工程。

int a = 4; //定义一个全局变量
int main()
{
	printf("/d",a); //a的作用域包括该函数,因此无须声明
	return 0;
}

对于局部变量来说,它的作用域一般可以通过{}来判断。

int main()
{
	{
		int a = 7; //定义一个局部变量a
	}
	printf("/d",a); //报错,a的作用域仅限于上面的{}内
	return 0;
}

另外,关于全局变量:
两个不同的源文件的全局变量一般而言是不可以共通的。
在VC中同一项目下建立两个同样的源文件,一个文件中定义的全局变量在另一个文件中无法使用。
如果想要扩展该全局变量的作用域,需要使用extern关键字。
例如:
在源文件add.c中,我定义了一个变量a = 7。
想要在demo.c中使用它,则

extern int a; //在函数外声明我要使用其它文件的变量
int main()
{
	printf("%d",a); //在此我便可以打印a了
	return 0;
}

生命周期:指变量从创建到销毁的时间段。
对于局部变量而言,它的生命周期可以通过它的作用域来判定,从作用域开始到作用域结束,这便是它的生命周期。

int main(){
		int a = 7; //生命周期开始
		printf("/d",a); //生命周期结束
	}
	return 0;

对于全局变量而言,它的生命周期从程序开始运行到程序结束。

常量

常量是程序中不可改变的量。
它分为:
1.字面常量
2.const修饰的常变量
3.#define定义的标识符常量(宏定义)
4.枚举常量
字面常量,是在程序中直接写出来的常量,不能直接调用,目前还不知道有什么用处。

int main()
{
	3.14;
	6648;
	"C";
	//上面三个均为字面常量
	return 0;
}

const修饰的常变量,是指一个被const函数所修饰而具有了常量属性的变量。

int main()
{
	int a = 7;
	a = 13//a为变量,可随意修改值
	printf("%d",a); //输出13
	const int b = 16; //经过const修饰的b,不能改变其值
	printf("%d",b); //输出16
	b = 8; //重新赋值会报错。
	return 0;
}

尽管被const修饰后的变量拥有了常量属性,但它不能用在一些需要常量的地方,如数组。
#define定义的标识符常量,又称宏定义,是用预处理指令#define定义的常量。

#define NUM 1200 //定义宏NUM=1200,注意末尾无需分号
int main()
{
	a = NUM; //在接下来的函数中,NUM指代1200
	printf("%d",a); //输出为1200
	NUM = 1500; //会报错,NUM为常量
	return 0;
}

还需注意的是,一般宏的名字由大写字母组成,此已成程序员规范,但C语言标准中并无硬性的要求。
枚举常量,是用enum定义的一个符号常量集。

enum demo //定义一个符号集demo,内有常量AQ,BQ,CQ
{
	AQ, //这些符号的本质是int型数值,AQ=0
	BQ,
	CQ
}; //注意末尾分号
int main()
{
	enum demo a = AQ; //赋值a等于AQ所代表的值,即"0"
	printf("%d",a); //输出0
	printf("%d",BQ); //输出1
	printf("%d",CQ); //输出2
	return 0;
}

在枚举常量中,所枚举的字符名称所代表的常量是按照简单的012345方式赋予的,起始值为0,然后依次加一。
可以在初始定义的字符名称中赋值,这相当于改变了起点。

enum C 
{
	AQ = 8,
	BQ, //递增,故BQ = 9
	CQ  //同理,CQ = 10
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值