C语言面试问题集锦

1.变量:

作用域分为:局部变量, 全局变量;

全局变量可以为本文件中其他函数所共用,作用是增加了函数间数据联系的渠道,可以减少函数实参与形参的个数,从而减少内存空间以及传递数据的时间消耗,但是不在必要时不要使用全局变量,原因有:(1)全局变量在程序的全部执行过程中都占用存储单元(分配在静态存储区),而不是仅在需要时才开辟存储单元;(2)通用性降低,因为函数在执行时要依赖于其所在的外部变量;(3)清晰性降低,在各个函数执行时都有可能改变外部变量的值,很难清除地判断出每个瞬间各个外部变量的值,程序容易出错。

存储类别分为:静态存储方式(在程序运行期间由系统分配固定的存储空间方式)和动态存储方式(在程序运行期间动态的分配存储空间的方式)。具体分为四种:自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。

       a)自动的(auto)——动态存储区,一般包括函数中的形参和在函数(包括复合语句)中定义的变量

       b)静态的(static)——静态存储区,(1)所占的存储单元在程序的整个运行期间都不释放(2)在编译时已附初值,即只赋初值一次,若不附初值,编译时自动附初值为0,以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值(3)静态局部变量在函数调用结束后仍然存在,但是其他函数是不能引用它的。使用场合:(1)需要保留函数上一次调用结束时的值(2)如果初始化后,变量只被引用而不改变其值,则用静态局部变量比较方便,以免每次调用时重新赋值。

用static来声明一个变量的作用有二:

——对局部变量用static声明,是改变存储方式,则使该变量在整个程序执行期间不释放,为其分配的空间始终存在,每次调用时会保留上次函数调用结束的值。

——对全局变量用static声明,是改变了作用域,则该变量的作用域只限于本文件模块。

       c)寄存器的(register)——只有局部自动变量和形参可以作为寄存器变量,适合于需要频繁使用的变量。

       d)外部的(extern)——(1)在一个文件内声明外部变量,就是在定义点之前的函数想引用外部变量,就要加extern。(2)在多文件中声明外部变量,在一个文件中引用另一个文件中的变量。如果外部变量加上static,就是希望该变量只限于被本文件引用,而不被其他文件引用,这是静态外部变量

你可能感兴趣的:(C语言面试问题集锦)