C语言复习:变量存储类别与作用域解析

需积分: 41 3 下载量 4 浏览量 更新于2024-08-23 收藏 107KB PPT 举报
"这篇资源主要涵盖了C语言中的变量存储类别、作用域和生存期,以及相关的数据定义和程序设计基础知识。重点讲解了自动型(auto)、静态型(static)和外部参照型(extern)的变量,区分了全局变量与局部变量,特别是自动局部变量和静态局部变量、全局变量和静态全局变量之间的差异。此外,还涉及了C语言的基本要求和内容,包括数据类型、运算及流程控制、程序结构和函数、输入输出、命令行参数、编译预处理和常用算法。" 在C语言中,变量的存储类别决定了它们在内存中的存储方式和生命周期。自动型(auto)变量是在函数调用时分配内存,函数结束时释放,通常用于局部变量。静态型(static)变量则在整个程序执行期间都存在,只在首次声明时初始化,后续调用不会重新分配。外部参照型(extern)用于声明在其他文件中定义的全局变量。 全局变量是在程序开始运行时分配内存,直到程序结束才释放,可以在整个程序的任何地方访问。而局部变量仅在其定义的代码块内有效。静态局部变量虽在局部作用域内,但其生命周期跨越整个程序,且仅在首次声明时初始化。 关于数据定义,基本类型包括整型(int, long, short, unsigned)、实型(float, double)和字符型(char)。常量分为整型、实型、字符型和符号常量,如NULL和EOF。构造类型如数组和结构体允许我们组合和管理多个数据项。数组可以是一维或多维,初始化时需特别注意元素数量和初始值的匹配。例如,二维数组a[3][2]初始化为{1,2,3,4,5,6},元素a[2][1]的值为6。 在C语言中,字符串是以字符数组的形式存在的。数组定义中,选项A和B是正确的初始化方式,而C和D有误,因为C选项尝试在数组声明后赋值,D选项多了一个额外的字符。strcmp函数比较两个字符串,如果第一个字符串小于第二个,返回负数;如果相等返回0;如果大于返回正数。所以,strcmp("box", "boss")的值会是负数。 最后,程序展示了如何计算对角线元素之和。第一个循环计算主对角线元素之和,第二个循环计算副对角线元素之和。输出结果将是这两个和的打印。