内存单位:
- Byte。1Byte=8bits。
指针数组与数组指针:
- 指针数组:int* p[n],指针的数组,存n个地址;
- 数组指针:int (*p)[n],数组的指针,存1个地址。
结构体struct:
- 内存对齐:前面变量的内存对齐为后面变量内存的整数倍,整个struct是最大变量内存的整数倍。
共用体union:
- 相同的内存位置存储不同的数据类型,任何时候只能有一个成员带有值。内存长度由最长成员决定。
so动态库与编译:
- 动态库windows下.dll,linux下.so。静态库windows下.lib,linux下.a。
- 源文件(.h,.cpp等)
- -->预编译:完成宏替换、文件引入,以及去除空行、注释等。
- -->编译:将预处理后的代码处理成汇编代码.s。代码检查、代码优化、汇编代码生成。
- -->汇编:.s转为机器代码01序列.o文件。
- -->链接
- -->可执行文件
# 生成目标文件.o
gcc -c test.c
# 生成动态库,-shared代表生成动态库,-fPIC代表使用相对地址
gcc -shared -fPIC -o libtest.so test.o