C语言复习:宏定义、typedef与动态内存管理
需积分: 50 47 浏览量
更新于2024-07-13
收藏 299KB PPT 举报
"这篇复习资料主要涵盖了C语言中定义结构体类型变量的几种方法,以及相关的编程概念,如宏定义、typedef、指针、动态存储管理和内存管理函数。"
在C语言中,定义结构体类型变量是组织复杂数据类型的重要手段。结构体允许我们将不同类型的数据组合在一起,形成一个新的复合数据类型。在给定的描述中,展示了两种定义结构体类型变量的方法:
1. 先声明结构体类型,然后创建该类型的变量。例如:
```c
struct student {
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
```
接着,我们可以创建两个`struct student`类型的变量`student1`和`student2`:
```c
struct student student1, student2;
```
2. 在声明结构体类型的同时定义变量。这一步骤可以合并:
```c
struct student {
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
} student1, student2;
```
这种方法更加简洁,一次性完成了结构体类型定义和变量的声明。
此外,资料中还提到了C语言中的宏定义和`typedef`:
- **宏定义**:`#define`用于创建宏,可以分为无参数宏和带参数宏。无参数宏如`#define OK1`,带参数宏如`#define S(a, b) a * b`,宏定义主要用于文本替换。
- **typedef**:可以用来为已存在的类型创建新的别名,如`typedef int ElemType`,这样可以用`ElemType`代替`int`,简化代码可读性。例如,`typedef int ARR[10]`使得`ARR a, b, c, d;`等同于`int a[10], b[10], c[10], d[10];`
接下来,资料介绍了指针的概念:
- **指针**:指针变量是用来存储内存地址的,它们都有固定的字节大小。例如,`int *p`声明了一个整型指针`p`,可以通过`&`运算符获取变量的地址,`*`运算符用于访问指针所指向的值。
动态存储管理是C语言中处理内存的重要部分,主要包括以下函数:
- **malloc()**:用于动态分配内存,返回值是分配的内存块的首地址。例如,`int *p = (int *)malloc(20);` 分配了20个字节的空间,`malloc`返回的是无类型指针,通常需要转换成实际的数据类型指针。
- **free()**:释放之前通过`malloc`分配的内存,防止内存泄漏。例如,`free(pd);`会释放指针`pd`指向的内存。
- **realloc()**:用于调整已经分配的内存大小,如果无法扩展,则返回`NULL`。使用时需注意,如果`realloc`失败,原内存会被释放,所以需要保存原始指针。
在编程实践中,确保正确使用这些内存管理函数,防止内存泄漏,是非常关键的。在整个程序运行结束前,应该释放所有动态申请的存储空间。
2022-06-14 上传
2009-03-04 上传
2021-07-14 上传
2011-12-20 上传
2009-01-19 上传
2011-11-06 上传
763 浏览量
2010-05-26 上传
2022-07-12 上传

李禾子呀
- 粉丝: 26
最新资源
- FlowReactiveNetwork: Android网络状态监听与Coroutines Flow集成
- 零基础SSH环境搭建教程与测试指南
- Win10下使用hiredis库实现C++操作Redis数据库
- 阿云里Redis集群安装与远程访问配置教程
- 办公电脑限制下高效利用文档资源的方法
- MaxDOS 9.3 版本发布:压缩包文件详细解析
- Stripe Checkout客户端POC实现与订阅滚动测试
- ANTLR 2.7.7源文件与JSTL的整合使用
- WordPress reCAPTCHA插件:轻量级安全防护
- SuperObject 1.25版本更新与XE2支持增强
- Laravel 5存储库模式:抽象和灵活的数据层管理
- 深入浅出CTreeCtrl类的递归技术及其应用
- Linux下的RAR压缩软件新版本发布 - rarlinux-5.9.1
- 系统延迟启动工具StartDelay——优化电脑开机速度
- REDHAT7.4平台下QT5.9.3+OpenGL三维坐标显示程序演示
- 深入理解EventBus总线使用及Demo演示