我学C语言的日子(10)

DAY10C语言高级编程重点笔记:

GCC:

  • gcc 交叉平台编译器。
  • 了解gcc 所支持的后缀名解释
  • 分析器;汇编器;链接器;标准C库
预处理(Preprocessing)
编译(Compilation),
汇编(Assemble),
链接(Linking)。
  • 参数用法 -c -o -g -O -O2 -l -LM -Wall
  • 错误分类:1.语法错误,2.头文件错误, 3.档案库错误, 4.未定义错误

GDD:

  • 调试工具
  • gdd -g test.c -o test 必加-g
  • p 查看变量, n 下一步,l 查看代码, b 行号 设置断点 ,info b 查看断点, r 运行代码,q退出调试,c恢复正常执行。

条件编译和结构体

#ifdef #else #endif 条件编译语法
struct student {};

  • struct student stu1; 别名变量名
  • 测算结构体大小,注意字节对齐,的补空间

结构体数组和指针

struct student s[4];定义数组
struct student *p; 定义指针 (*p).name或p->name 取内容

TYPEDEF:

union gy {};定义共用体,内部定义元素占用同一空间以最大的空间为主
union gy n; 定义变量, n.a 访问
union gy{ struct s {a}s;} n.s.a
typedef 定义数据类型别名 typedef struct student STU; STU.name
typedef 定义结构体和共用体时可才省去名字直接别名
typedef 直接定义指针typedef struct {}STU, *SUT_P; STU_P q 与 STU *P 作用等同

内存管理:

存储模型:代码区、全局变量与静态变量区、局部变量区栈区、动态存储区堆区。
为什么需要动态分配,空间按量分配和回收

  • malloc/free ,开辟空间,回收空间
  • char *p = NULL; p = (char *)malloc(10); 开辟空间 free(); 成对出现,在不确定要开辟空间大小时使用sizeof(数据类型)测出一个大小给malloc(sizeof(int))
    野指针:不是NULL指针,是指向”垃圾“内存的指针,对于当前程序没有用的内存空间,叫垃圾内存
    删除一个指针p free§ 删除的是p指针指向的 malloc 空间而不是p本身,free后的指针需要置于NULL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值