gcc的编译过程
- 预处理:头文件包含、宏替换、条件编译、删除注释
- 编译:主要进行词法、语法、语义分析等,检查无误后,将预处理好的文件编译成汇编文件
- 汇编:将汇编文件转换成二进制文件
- 链接:将项目中的各个二进制文件+所需的库+启动代码链接成可执行文件
内存的最小存储单位和内存的最小计量单位
- 内存的最小存储单位是二进制位
- 内存的最小计量单位是字节
#include<> 与 #include“”区别
- include<>到系统指定目录寻找头文件
- include“”先到项目所在目录寻找头文件,如果没有找到再去系统指定的目录下查找
变量的命名规则
- 变量名的开头必须是字母或者下划线,不能以数字开头
变量的声明与定义的区别
- 变量的声明不需要建立存储空间
- 变量的定义需要建立存储空间
C语言中有符号和无符号的区别
- 有符号:数据的最高位是符号位,0表示正数,1表示负数
- 无符号:数据的最高位也是数据位
补码
- 在计算机系统中,数值统一用补码来表示和存储。
- 使用补码可以将符号位与数值位统一计算
- 加法减法也可以统一处理
- 数0的补码表示方法是唯一的
- 正整数的补码:是其二进制表示,与原码相同
- 负整数的补码:将其原码除符号位外的所有位取反后加1
[+0]补=[+0]原=00000000
[-0]补 = 10000000->11111111+1=00000000
数组
- 同一个数组中所有的成员都是相同的数据类型
- 数组中的所有成员内存地址是连续的
数组的分类
- 静态数组:例如int a[5];确定了数组的大小,在程序运行时不能更改数组的大小。
- 动态数组:int * a = (int *)malloc(sizeof(int)*5);主要是在堆区申请的空间,数组的大小在程序运行过程中可以更改。
一维数组的不初始化、部分初始化、完全初始化
- 不初始化:数组元素的内容为随机数
- 部分初始化:未初始化的部分自动补0
- 完全初始化:数组元素为初始化的元素