C语言面试题集锦:变量、作用域和存储方式

需积分: 12 11 下载量 135 浏览量 更新于2024-07-27 收藏 186KB DOC 举报
"C语言面试题大汇总" 《C语言面试题大汇总》题集是一个涵盖C语言各种知识点的面试题集锦。下面是从这份题集中提炼出的知识点: 1. 局部变量和全局变量的关系: 在C语言中,局部变量和全局变量可以同名,但是在函数内引用这个变量时,会使用同名的局部变量,而不会使用全局变量。如果需要使用全局变量,需要使用作用域运算符“::”。此外,在同一个函数内可以定义多个同名的局部变量,每个局部变量的作用域就在那个循环体内。 2. 引用全局变量的方式: 可以使用extern关键字或引用头文件的方式来引用全局变量。如果使用引用头文件方式来引用某个在头文件中声明的全局变量,假定你将那个编写错了,那么在编译期间会报错。如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 3. 全局变量的定义和声明: 可以在不同的C文件中以static形式来声明同名全局变量,前提是其中只能有一个C文件中对此变量赋初值。此时连接不会出错。静态全局变量和普通全局变量的区别在于静态全局变量限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。 4. static关键字的作用: static关键字可以用于全局变量、局部变量和函数。对于全局变量,static关键字可以限制其作用域,仅在定义该变量的源文件内有效。对于局部变量,static关键字可以改变其存储方式和生存期,使其变为静态变量,从而改变其生命周期。对于函数,static关键字可以使其仅在定义该函数的源文件内可见。 5. 变量的生命周期: 变量的生命周期是指从变量创建到变量销毁的整个过程。C语言中的变量可以分为自动变量、静态变量和动态变量。自动变量是函数中的局部变量,它们的生命周期是从函数调用开始到函数返回结束。静态变量是使用static关键字声明的变量,它们的生命周期是从程序启动到程序结束。动态变量是使用malloc函数动态分配的变量,它们的生命周期是从分配到释放。 6. 程序的存储方式: C语言中的变量可以存储在不同的存储区中,包括栈、堆、数据段和代码段。栈是用于存储函数的局部变量和函数调用信息的。堆是用于存储动态分配的变量的。数据段是用于存储初始化的全局变量和静态变量的。代码段是用于存储程序的指令的。 7. 程序的执行过程: C语言程序的执行过程可以分为几个阶段:预编译、编译、汇编、链接和加载。预编译阶段是将源代码中的宏定义和头文件包含展开。编译阶段是将源代码翻译成汇编代码。汇编阶段是将汇编代码翻译成机器代码。链接阶段是将多个目标文件链接成一个可执行文件。加载阶段是将可执行文件加载到内存中。