目录
强制数据类型转换
C语言的编译过程
预处理,编译,汇编,链接
- 预处理:
头文件展开----------把头文件里的代码放在文件最前面,这样我们就可以使用头文件里已经定义好的功能了, 感觉类似Python的import
宏替换--------------替换#define指定的符号
条件编译-------- ---按条件裁剪代码(好像是在预处理阶段把符合条件的代码留待编译,不符合条件的代码删除 ----在预处理阶段,代码怎么知道符不符合条件呢?不知道)
- 编译
经过一系列分析,将与处理完的问价转成汇编代码
- 汇编
将汇编代码转成CPU可以识别的二进制文件,一条汇编语句对应着一条机器指令
- 链接
解决多个文件间的符号引用问题,把所有目标文件链接到一起,确定最终地址,生成可执行文件
变量
是内存中数据存储区域的表示 = 变量名 + 值 + 数据类型
只能初始化一次,但可以多次赋值
-
标识符
由自己命名
表示变量,函数,或其它实体的名称
必须先声明再定义
由字母数字下划线构成,不能以数字开头,不能是关键字
-
关键字
C语言标准规定的词汇
有特殊的意义和用途
可以直接使用
-
数据类型
-
------数据的解释方式
C语言在定义时必须确定数据类型,所以C语言是强类型的语言
必须先声明后使用,数据类型 标识符
在内存中存放数据必须确定的三件事:数据存在哪里,数据的长度,数据的解释方式
基本类型 | char, int, short, long, long long, double, float, signed, unsigned |
构造类型 | 数组, struct, union, enum |
指针类型 | |
空类型 | void |
没有字符串类型,用 char str[] = "123" 来定义字符串
-
转义字符
\ 八进制数字
printf("\110\145\154\154\157"); //>> hello
\' \" \\ \a \b \f \n \r \t \v
\ddd----1-3位数的八进制数
\xdd---两位数的16进制数
转义字符占一个字节,比如"\123" 占一个字节
-
作用域
限定代码可用性的代码范围
全局变量的作用域是整个工程,局部变量的是变量所在的局部范围
-
生命周期
变量从创建到销毁的时间段
常量
是常数,程序运行中不能被改变的量
-
类型
字符常量---'q', 'U', '\n'
1byte
ASCII 设定0-127表示字母 符号,一个字节就足够
所以char类型其实就是int 类型
char letter = 'A'; printf("%c", letter + 32); //ASCII A--65 //a--97 //>> a
实型常量---1,2,3.12
字符串常量-"qwe", "asd"
符号常量---#define 标识符 常量。 #define PRICE 3-将数字常量修改为符号常量,方便统一修改
const修饰的常变量
枚举常量
'\0' ---字符串结束的标志,不计入字符串长度,占一个byte
转义字符占1个byte
Printf函数
将char 字符串 int..等二进制表示的数据,按照转换规范---->字符,打印到控制台上
第一个参数是字符串,是需要输出的内容
占位符和后续参数一一对应
-
占位符
%d char int short