C语言易错易忘点

内存单位:

  • 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

猜你喜欢

转载自blog.csdn.net/weixin_36389889/article/details/106471687