C语言复习关键点:宏定义、typedef与动态内存管理

需积分: 15 11 下载量 26 浏览量 更新于2024-07-23 收藏 299KB PPT 举报
"C语言复习资料,包括宏定义、typedef应用、指针概念与操作、动态存储管理的主要函数malloc()、free()和realloc()。" 在C语言中,宏定义是一种预处理指令,用于在编译阶段进行文本替换。不带参数的宏定义简单地将标识符替换为指定的字符串,例如#define OK1、#define ERROR0和#define OVERFLOW -2。带参数的宏定义则可以进行参数替换,如#define S(a, b) a * b,使得S(3, 2)在编译时被替换为3 * 2。 typedef关键字用于为已存在的类型创建新的别名,这有助于提高代码的可读性和一致性。例如,typedef int ElemType; 之后,我们可以用ElemType代替int声明变量,如ElemType e, *p;。同样,typedef还可以用于数组类型,如typedef int ARR[10];,之后ARR a, b, c, d;相当于声明了四个长度为10的整型数组。 指针是C语言中的重要概念,它存储了变量在内存中的地址。每个指针变量都必须先声明其数据类型,例如inta; float d; int *p;。引用指针使用&获取变量地址,*用于解引用指针,访问指针指向的值。如p = &a; p = &d; 分别将指针p赋值为变量a和d的地址。 动态存储管理在C语言中通过malloc()、free()和realloc()函数实现。malloc()函数用于在运行时动态分配内存,如int *p; p = (int *)malloc(20); 分配20个字节的内存给指针p。返回值是void*类型,通常需要强制类型转换。malloc()的参数是所需内存的字节数,例如sizeof(int) * 20表示分配20个int大小的空间。 一旦内存分配成功,可以通过free()函数归还不再使用的内存,防止内存泄漏。例如,当不再需要pd指向的内存时,执行free(pd)。释放内存后,必须保存malloc()的返回值以便后续释放,否则无法再次释放内存。 realloc()函数用于改变已分配内存的大小。如果需要扩大或缩小已分配的内存,可以调用realloc(ptr, new_size),其中ptr是先前分配的内存的指针,new_size是新的内存大小。realloc()可能会移动内存块,因此在调用前应保存原有指针的副本,以防在重分配过程中失去对内存的访问。 在C语言编程中,理解和熟练运用这些知识点对于编写高效且内存管理良好的代码至关重要。正确地使用宏定义、typedef、指针和动态内存管理能够提升代码质量,避免潜在的运行时错误,并优化内存使用。