C语言知识回顾:指针与内存管理

需积分: 9 0 下载量 24 浏览量 更新于2024-07-14 收藏 1.48MB PPT 举报
"C语言知识回顾,包括数据类型、变量存储属性、指针、内存管理和结构体、共用体、枚举等基础知识" 在C语言中,数据类型是编程的基础,它决定了变量占用内存的大小、取值范围以及可执行的操作。基本数据类型包括字符型(char)、整型(int, short, long)、浮点型(float, double)以及枚举型(enum)。枚举类型允许我们创建一组命名的整数常量,方便代码阅读和理解。构造数据类型如数组、结构体(struct)和共用体(union)则允许我们将多个数据项组合成单一的实体。 结构体是C语言中的一个重要特性,它允许我们将不同类型的数据组合成一个整体,形成自定义的数据结构。例如,我们可以定义一个`struct student`来存储学生的个人信息,包括学号(num)、姓名(name)、性别(sex)、年龄(age)、分数(score)和地址(addr)。结构体的定义并不分配内存,只有当创建结构体变量时才会分配内存,并且每个成员按照它们各自的类型占据相应的内存空间。 共用体与结构体类似,但它们的成员共享同一块内存空间,这意味着在任何给定时间,只有一个成员的值是有效的。例如,`union data`可以包含一个整数(int)、一个字符(char)和一个浮点数(float),但它们不能同时存在。当我们对一个成员进行赋值或读取时,其他成员的值会被覆盖。因此,共用体主要用在节省内存或实现特定的位操作等场景。 指针是C语言的另一大特色,它能够存储变量的内存地址。在例子中,`char *string`是一个指向字符的指针,初始化为字符串"I love China!"的首地址。通过`string+=7;`,指针移动到字符串的第七个字符,然后`while(*string)`循环遍历并输出剩余的字符直到遇到字符串结束标志`\0`。这种利用指针的操作方式使得对内存的访问和处理更加灵活。 内存管理方面,C语言提供了动态内存分配函数如`malloc()`和`free()`,允许程序在运行时动态地申请和释放内存。虽然这部分内容在提供的摘要中没有直接涉及,但在实际编程中,理解如何有效地管理内存对于避免内存泄漏和提高程序性能至关重要。 在C语言中,变量的存储属性包括自动(auto)、静态(static)、寄存器(register)和外部(extern)。自动变量在函数调用时创建,函数结束时销毁;静态变量在整个程序执行期间保持其值;寄存器变量旨在提高效率,但实际是否使用寄存器由编译器决定;外部变量在整个程序中可见,可以在多个文件间共享。 C语言知识涵盖了数据类型、指针、内存管理以及构造数据类型等多个方面,理解和熟练掌握这些概念是编写高效、可靠的C程序的基础。