C语言存储类别解析与历史

需积分: 9 1 下载量 101 浏览量 更新于2024-08-24 收藏 5.67MB PPT 举报
"谭浩强C语言第三版-存储类别小结" C语言是计算机编程领域中一种广泛应用的高级编程语言,起源于贝尔实验室的B语言,由D.M.Ritchie在1973年设计。它以其简洁、高效和接近硬件的特性逐渐发展成为全球最广泛使用的编程语言之一。随着时间的推移,C语言经历了多次标准更新,其中ANSI C(1983年)和ISO C(1990年及后续修订)是重要的里程碑。 在C语言中,存储类别是一个关键概念,它涉及到变量在内存中的分配方式以及其生命周期。存储类别主要分为以下几类: 1. 局部变量: - 自动变量(Automatic Variables):这类变量在函数内部定义,当函数执行完毕时,它们的值会消失,因为它们在栈上分配内存。例如,局部变量通常就是自动变量。 - 静态局部变量(Static Local Variables):与自动变量不同,静态局部变量在函数第一次调用时初始化,之后每次调用函数时,其值都会保留。它们同样在栈上分配,但生命周期贯穿整个程序运行。 - 寄存器变量(Register Variables):为了提高效率,程序员可以请求将变量存储在CPU寄存器中,而不是常规内存。然而,是否真正存储在寄存器取决于编译器,且数量有限,所以并非总是可行。 - 形式参数(Formal Parameters):函数参数可以看作是自动变量,但它们的行为取决于函数调用的上下文,可以是自动或寄存器变量。 2. 全局变量: - 静态外部变量(Static External Variables):这类变量在整个程序中只在声明它的文件内可见,其值在程序执行期间始终保留。它们在数据段中分配。 - 外部变量(External Variables):若未声明为静态,全局变量在所有文件中都可见,这可能导致名称冲突。同样,它们在数据段中分配。 了解这些存储类别对于编写有效且无错误的C程序至关重要,因为它们直接影响到变量的生命周期、作用域以及内存管理。在实际编程中,合理选择存储类别可以优化程序性能,减少内存泄漏,并确保程序的可读性和可维护性。 在学习和使用C语言时,了解所使用的编译系统的特性也很重要,因为不同的编译器可能对某些语言特性和规则有不同的实现。本书的叙述基于ANSI C标准,读者应当参考相应的编译器文档以获取具体实现细节。随着C语言标准的不断更新,如ISO C99和C11,开发者需要时刻保持对最新标准的熟悉,以保持代码的现代化和兼容性。