优秀的编程知识分享平台

网站首页 > 技术文章 正文

C/C++编程语言经典面试题,关于static变量要知道的几个问题!

nanyue 2024-07-26 15:43:32 技术文章 6 ℃

static关键字是C语言中比较常见的一个关键字,但我们需要搞清楚有关它的几个问题。

一. static全局变量与普通全局变量的区别

本身全局变量是放在静态存储区的,而加上static关键字的静态全局变量当然也是静态存储的方式,这两者存储方式是一样的。区别在于变量的作用域不一样,当源程序由多个文件组成时,加static关键字的静态全局变量只作用于当前的文件,而非静态的普通全局变量作用于整个源代码中,同一源程序的其它源文件都能使用它。

二. static局部变量与普通局部变量的区别

我们知道普通局部变量是存在栈中的,使用完成后会立即释放,而static局部变量存在静态存储区。所以如果将普通的局部变量前面加上static关键字,既改变了它的存储方式,也改变了它的生存期。

三. static函数与普通函数的区别

跟static全局变量与普通全局变量类似,static声明的函数只在当前的源文件中有效,而普通函数在所有源文件中都有效。而且static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。

另外还有一个关键字extern,通过extern声明的变量在整个工程里面都可以用。一般来说,extern声明的全局变量的修改可能会影响整个代码,static全局变量的修改可能会影响一个文件,而static局部变量的修改可能会影响一个块的代码。

最近发表
标签列表