static 修饰的全局变量存储在哪里
时间: 2023-11-06 09:04:21 浏览: 104
static修饰的全局变量存储在静态存储区。静态存储区是在程序执行期间一直存在的存储区域,它的生命周期与程序的执行周期相同。当全局变量被static修饰后,它的作用域仍限制在当前文件内,但它的生命周期不受函数调用的影响,可以在整个程序执行过程中持续存在,并且只能被当前文件内的函数访问。这使得静态全局变量在不同函数之间共享数据成为可能。
相关问题
修饰词static与extern在作为变量的修饰词时功能正好相反, 前者只能修饰局部变量,后者只能修饰全局变量
这句话有误。实际上,`static` 和 `extern` 都可以修饰局部变量和全局变量,只是它们的作用不同。
`static` 修饰的变量会被分配在静态存储区,其生命周期与程序运行期间一致,不会随着函数的结束而销毁,可以用于保持变量的值不变或者限制变量的作用域。
`extern` 修饰的变量则是声明一个全局变量,这个变量可能在其他文件中定义,使用 `extern` 声明可以让当前文件访问到这个变量。
因此,`static` 和 `extern` 的作用是不同的,但都可以修饰局部变量和全局变量。
static全局变量
静态全局变量是指在全局作用域下被static修饰的变量。它与非静态全局变量在存储方式上并无不同,都是静态存储方式。它们的区别在于作用域的范围。非静态全局变量的作用域是整个源程序,而静态全局变量的作用域限制在定义该变量的源文件内,不能在同一源程序的其他源文件中使用。这样做的目的是为了避免在其他源文件中引起错误。静态全局变量只能为该源文件内的函数公用。因此,static修饰全局变量的作用是限制其使用范围,防止在其他文件中引用。\[1\]\[2\]\[3\]
#### 引用[.reference_title]
- *1* [static变量; static函数](https://blog.csdn.net/saturnbj/article/details/4294410)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [C/C++ 中 static 的用法全局变量与局部变量](https://blog.csdn.net/fcf1990501/article/details/126022623)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [static与全局变量相关总结](https://blog.csdn.net/xuxia_yan/article/details/52770544)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文