C/C++口述题解答(1)
1.static关键字的作用
在C语言中static的作用如下:
第一、保持变量内容的持久。
》》解释:局部变量存放于栈区,static 修饰之后,就会将原本存放于栈区的局部变量转移到全局区/静态区,延长了局部变量的周期,知道程序运行结束以后才释放。
第二、隐藏。
》》解释:static修饰全局变量的时候,static修饰的全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。
第三、默认初始化为0。
》》解释:C语言中只有两种变量存放静态存储区:未初始化的全局变量和未初始化的static变量。然而在静态存储区,内存中所有的字节默认值都是0×00。
2.静态库和动态库的区别
二者的不同点在于代码被载入的时刻不同。
l 静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库,因此体积较大。
l 动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在,因此代码体积较小。
动态库的好处是,不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例。带来好处的同时,也会有问题!如经典的DLL Hell问题,关于如何规避动态库管理问题,可以自行查找相关资料。