栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言基础学习(二)——变量与常量

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言基础学习(二)——变量与常量

变量:

局部变量:定义在某个大括号范围之间的变量
生命周期:
执行到定义时分配内存空间,大括号结束则内存被释放

作用域:
只能大括号范围内访问该变量

全局变量:定义在所有函数之外的变量
生命周期:
程序运行时,分配内存空间,整个程序结束时释放内存空间

作用域:
在程序任意的位置都可以访问

变量的修饰符:
auto:变量的默认修饰符,可以省略不写,表示变量的内存由系统自动分配与释放
const:常量修饰符,在程序运行的过程中其值不可更改
signed:变量的默认修饰符,有符号
unsigned:无符号,让数据类型的最高位不作为符号位出现
例如:char a; //保存的数值范围为:-128到127
unsigned char a; //保存的数值范围为:0-255
static:静态修饰
修饰局部变量:
1.静态局部变量初始化只会被执行一次
2.变量会随着程序的结束而结束
修饰全局变量:
该全局变量只能在本文件中访问到
修饰函数:
该函数只能在本文件中访问到

程序的异常处理:
编译时异常:只检查语法问题
warning:会产生可执行文件,但运行不一定正常
error:不会产生可执行文件
运行时异常:逻辑错误
段错误(core dump):非法内存访问
利用输出语句测试程序

常量:

1.定义的常量:
语法:const 数据类型 常量名 = 值;

2.常量的直接量:直接使用的量值
10 3.14 ‘a’ “hello”

整形数的直接量值为:int
浮点数的直接量值为:double
字符的直接量值为:char
字符串的直接量值为:char *(地址)

数据类型的转换:
隐式转换:
编译器自动进行一些基本的类型转换
强制类型转换(显示转换):
(数据类型)数据:将某个数据强制转换为指定的数据类型
带单位的数据:
10L:long类型的数据10
3.14f:float类型的数据3.14

3.标识常量:宏 使用宏的好处(没有出栈入栈节省效率和空间)
语法:#define 宏名 宏值
在编译时,会使用宏值替换代码中所有使用宏名的地方

注意:
1、宏最外面要有(),每个参数也必须有()
2、宏一般不加; 因为,他不是一条语句
3、宏不能用于 ++ --的操作

带参宏:(有一定缺陷,如上面三点)
语法:#define 宏名(参数列表) 宏体
#define MAX(x,y) {(x)>(y)?(x):(y)}

拓展:
我们一般对一个函数进行修饰 inline

	inline 修饰一个函数,告诉编译器,在函数的调用的位置直接展开,而不产生函数调用
	不需要入栈出栈 但代码体积会增大
	如:static inline int add(int a,int b){return a+b;}
	在调用这个函数时会类似带参宏一样替换展开,既继承了带参宏的优势,又弥补了带参宏的缺陷
	
	
		带参宏与带参函数的区别:
		
		带参宏      					 	带参函数
		编译时替换			 				运行时执行
		参数类型不限						参数类型需提前定义
		程序长度 可变						程序长度不变
		不占运行时间 只占编译时间			调用和返回时占用时间
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/588616.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号