网站首页 > 基础教程 正文
static关键字是C语言中比较常见的一个关键字,但我们需要搞清楚有关它的几个问题。
一. static全局变量与普通全局变量的区别
本身全局变量是放在静态存储区的,而加上static关键字的静态全局变量当然也是静态存储的方式,这两者存储方式是一样的。区别在于变量的作用域不一样,当源程序由多个文件组成时,加static关键字的静态全局变量只作用于当前的文件,而非静态的普通全局变量作用于整个源代码中,同一源程序的其它源文件都能使用它。
二. static局部变量与普通局部变量的区别
我们知道普通局部变量是存在栈中的,使用完成后会立即释放,而static局部变量存在静态存储区。所以如果将普通的局部变量前面加上static关键字,既改变了它的存储方式,也改变了它的生存期。
三. static函数与普通函数的区别
跟static全局变量与普通全局变量类似,static声明的函数只在当前的源文件中有效,而普通函数在所有源文件中都有效。而且static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。
另外还有一个关键字extern,通过extern声明的变量在整个工程里面都可以用。一般来说,extern声明的全局变量的修改可能会影响整个代码,static全局变量的修改可能会影响一个文件,而static局部变量的修改可能会影响一个块的代码。
猜你喜欢
- 2024-10-12 C++中override与overload的区别:深入解析与应用
- 2024-10-12 C++中的static_cast #程序代码 c++ static用法
- 2024-10-12 为什么C++ 单例局部static初始化是线程安全的?
- 2024-10-12 编码规范-C++:尽可能使用static_cast而不是reinterpret_cast
- 2024-10-12 C++类对象中的this指针与静态成员:理解与应用
- 2024-10-12 看完就会用的C++17特性总结 c++ 17 新特性
- 2024-10-12 C++|变量的类型系统和属性 c++变量有哪几种作用域
- 2024-10-12 C++友元和静态函数:如何用特殊的方式访问和管理类的成员
- 2024-10-12 C++中的static关健字 c static关键字
- 2024-10-12 C++静态成员变量和静态成员函数使用总结
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)