C语言面试题解析:华为面试常见问题

需积分: 9 1 下载量 43 浏览量 更新于2024-07-25 收藏 282KB DOC 举报
为静态变量后是改变了它的作用域,限制了它的使用范围。对于局部变量,当函数调用结束时,普通局部变量会自动释放,而静态局部变量则不会被释放,它会保留上次调用时的值,直到程序结束。对于全局变量,普通全局变量在整个程序中都可以访问,而静态全局变量只在其声明它的源文件内可见。 3) static函数与普通函数的主要区别在于static函数在内存中只有一份,不会在每个函数调用时都创建一份副本,因此static函数在所有实例中都共享同一块内存,这就使得static函数在所有调用它的函数中都保持了相同的状态。此外,static函数不能被其他文件直接调用,增强了代码的封装性。 现在我们来看一下提供的面试题内容: 1. 局部变量和全局变量重名的问题:在函数内部定义的局部变量会遮蔽全局变量,如果想在函数内部使用全局变量,需要使用作用域解析运算符“::”。 2. 引用全局变量的方法:可以通过在头文件中包含或使用extern关键字来引用全局变量。extern关键字用于告诉编译器变量是在其他地方定义的。 3. 全局变量在头文件中的使用:全局变量可以放在头文件中,但为了避免命名冲突,建议使用static修饰,这样每个包含该头文件的C文件都会有自己的局部版本,而不是共享一个全局变量。 4. 代码输出分析: ```c #include<stdio.h> int main(void) { int a, b, c, d; a = 10; b = a++; // b = 10, a becomes 11 c = ++a; // c = 11, a is now 12 d = 10 * a++; // d = 120, a is incremented to 13 printf("b,c,d:%d,%d,%d", b, c, d); return 0; } ``` 该代码的输出将是:`b,c,d:10,11,120` 5. static变量的区别: - 静态全局变量:仅在定义它的源文件内可见,生命周期贯穿整个程序运行。 - 静态局部变量:在函数调用结束后不会被释放,下次调用时仍保留上次的值。 - 静态函数:只在定义它的源文件内可见,不进行额外的内存分配,多次调用共享同一内存区域。 这些面试题主要考察的是C语言的基础知识,包括变量的作用域、存储类型、预处理以及运算符的理解。理解和掌握这些知识点对于在大公司面试中表现出扎实的编程基础至关重要。