C语言经典例题:理解变量作用域与错误示例

1 下载量 116 浏览量 更新于2024-09-01 收藏 210KB PDF 举报
C语言作为一门基础且广泛应用的编程语言,掌握好经典题目对于提升编程技能至关重要。以下是一些关键知识点解析: 1. 函数和局部变量:在C语言中,选项A、B和C都是正确的。函数中的变量分为局部变量和形式参数。局部变量(如函数内部定义的变量)只在该函数范围内有效,A选项指出在不同函数中可以使用相同名称的变量,这是正确的,只要它们不属于同一个作用域。B项指出形式参数在栈中存储,这是因为函数调用时会为形参分配内存。选项D是错误的,因为复合语句(如花括号{}内的代码块)中定义的变量同样只在该代码块内部有效,不是整个函数。 2. 字符数组和`strlen`函数:示例代码展示了字符数组`acNEW`的初始化和`strlen`的使用。由于`acNEW`没有被正确地结束,即未添加空字符`'\0'`,`strlen`会根据遇到的第一个空字符计算长度,但由于后续是随机数据,输出结果是不确定的。正确做法是确保字符串以空字符结束。 3. 全局变量和链接:全局变量通常在函数外部定义,若被多个`.c`文件包含,需要确保在每个文件中声明但仅在一个地方定义(避免重复定义导致的链接器错误)。全局变量若想在多个文件中可见但仅被静态链接,可以使用`static`关键字修饰。 4. 联合体与内存布局:X86平台上的联合体(union)示例展示了如何使用联合体成员访问存储。联合体中各成员共享同一块内存空间,但可以通过指针分别访问。在这个例子中,将一个`short`值存储到`char`数组中,然后通过`a.k`打印出结果。因为X86是小端字节序,`short`值会被存储在最低字节地址,输出将是联合体内部`short`值的低16位表示。 总结:学习C语言时,理解变量的作用域、内存管理(如栈和全局变量)、字符串处理(包括正确终止字符)以及基本数据类型和结构的内存布局是非常重要的。通过解决这些经典题目,可以加深对C语言基础概念的理解,并提升实际编程能力。