C语言复习:指针变量与动态内存管理

需积分: 15 9 下载量 131 浏览量 更新于2024-08-23 收藏 299KB PPT 举报
"这篇资源主要涵盖了C语言中的关键概念,包括指针变量的引用、宏定义、typedef的应用以及动态存储管理。" 在C语言中,指针是编程中非常重要的一个部分,它允许我们直接访问和操作内存地址。指针变量的引用涉及到两个运算符:取地址运算符`&`和指针运算符`*`。取地址运算符`&`用于获取变量的内存地址,例如`&a`会得到变量a的地址。指针运算符`*`则用来访问指针变量所指向的值,如`*p`表示指针p指向的存储单元的值。定义指针变量时,需要指定其数据类型,例如`int *p`定义了一个指向整型变量的指针。然后可以使用`=`赋值运算符将指针指向特定变量的地址,如`p = &a`。但要注意,不同类型的数据地址不能混淆,比如`p = &d`是错误的,因为d是浮点型,而p定义为指向整型。 宏定义是C预处理器的一个功能,分为无参数宏定义和带参数宏定义。无参数宏定义简单地用标识符替换字符串,如`#define OK1`。带参数的宏定义则可以进行参数替换,例如`#define S(a,b) a*b`,这使得S可以作为一个简单的乘法计算宏。在实际使用中,我们可以像调用函数一样使用这些宏,如`area = S(3,2)`。 typedef是一个关键字,用于为已存在的类型创建一个新的名称,这在处理大型项目或需要提高代码可读性时非常有用。例如,`typedef int ElemType;`后,我们可以用`ElemType`代替`int`,`typedef int ARR[10];`则可以创建一个名为ARR的新类型,等同于数组类型`int[10]`。 动态存储管理在C语言中通过`malloc()`、`free()`和`realloc()`函数实现。`malloc()`用于动态分配内存,返回一个指向新分配空间的指针。例如,`int *p = (int*)malloc(20);`会分配20个字节的内存给整型指针p。分配的字节数通常基于数据类型和元素个数,如`5*sizeof(struct ElemType)`。`free()`函数用于释放不再使用的内存,防止内存泄漏。最后,`realloc()`可以改变已分配内存的大小,但需要注意如果分配失败,原来的内存会被释放,所以必须检查其返回值。 这篇资源提供了C语言中关于指针、宏定义、typedef和动态内存管理的基础知识,这些都是编写高效、可靠C程序的关键技能。理解和掌握这些概念对于C语言程序员来说至关重要。