一.继续赶C的进度
1.p39 C语言的内存布局
1)了解了C语言内存布局从低到高:
- 代码段(程序执行代码的内存区域,函数、常量变量等)、
- 数据段(已经初始化的全局变量和静态局部变量)、
- bbs段(未初始化的全部变量和静态局部变量)、
- 堆(动态分配的内存)、栈(函数执行的内存区域,局部变量、参数等)
2)知道了堆栈的区别,申请方式、释放方式、生存周期、发展方向
3)变长数组VLN是在栈上存放的
4)代码段放在地址是怕堆或栈溢出,覆盖代码
2.p40 高级宏定义
1)宏定义只是机械的替换
2)预处理:宏定义、文件包含、条件编译
3)宏定义可以分为不带参数和带参数的
4)可以用 #undef 终止宏定义的作用域
5)宏定义报错并不是在预处理的时候,一般是在编译的时候
6)带参数的宏定义,类似于
#define MAX(x, y) (((x) > (y)) ? (x) : (y))
3.p41
1)在函数名前加 inline 指定该函数为内联函数,内联函数会像宏定义那样,在main函数中展开
2)在带参数的宏定义中,# 紧跟一个参数,预处理器会将该参数转换为字符串
#define STR(s) # s
3)## 记号连接运算符,连接多个参数
#define TOGETHER(x,y) x ## y
4)宏定义也支持可变参数
#define SHOWLIST(…) printf(#__VA_ARGS__)
可变参数支持空参数
#include <stdio.h>
#define PRINT(format, ...) printf(#format, ##__VA_ARGS__)
int main(void)
{
PRINT(num = %d\n, 520);
PRINT(Hello FishC!\n);
return 0;
}
二.数据结构
对顺序表相关题目的算法分析有了一定的了解
1.删除表元素,可以重建表或者将不为该元素的前移再改变表的长度
2.小于第一个元素的在前,大于的在后
- 前后遍历序列,找到两个元素进行交换
- 将基准点赋值给新变量,从后查找,找到就将其赋值给[i] ;从前查找,找到就将其赋值给[j];最后将基准点赋值给[i]