static 用法总结

一 静态局部变量

1 存储空间的分配  作用域 生存期

static分配在静态存储区,作用域仅仅限于声明该变量的函数内部。在程序

整个运行期间都不释放,生存期贯穿于程序运行的整个过程。

auto类型分配在栈上,属于动态存储类别,占动态存储区空间,作用域仅仅限于声明该变量的函数内部。函数调用结束后自动释放,生存期不过是在声明该变量的函数内部

2 赋初值时的处理方式

static静态局部变量在编译时赋初值,即只赋初值一次;

auto自动变量赋初值是在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句

3、未赋初值时的处理方式

如果在定义局部变量时不赋初值的话:

static静态局部变量,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。

auto自动变量,如果不赋初值则它的值是一个不确定的值。

 

二 静态外部全局变量

C语言中static还用来声明静态外部全局变量,那么这个全局变量的作用域就被限制在本文件内部

如果在定义点之前的函数想要调用该变量 则应该在引用之前用关键字extern对该变量作“外部变量声明”。

表示该变量是一个已经定义的外部变量。有了此声明,就可以从“声明”处起,合法地使用该外部变量。

如果我们声明的全局变量不想被其他文件访问和使用 ———— 在声明的时候前面加上关键字 static

 

三 静态外部函数

C语言中函数的默认为全局的,外部文件想要引用可加extern 如果不想被引用可用static 修饰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在C++中,static关键字主要用于限定对象所使用的内存区域。根据static所应用对象的不同,可以分为全局对象、本地静态对象和类静态成员。在全局变量中使用static关键字,可以将变量存储在静态存储区,使得在函数调用完成后不会释放变量。相比之下,如果没有static修饰符,变量在函数重新被调用时会被再次初始化。\[2\]举个例子,假设有以下代码: ```cpp #include <iostream> using namespace std; int foo1(void){ static int i = 10; return i++; } int foo2(void){ int j = 10; return j++; } int main(void){ cout << "第一次 foo1()=" << foo1() << endl; cout << "第一次 foo2()=" << foo2() << endl; cout << "第二次 foo1()=" << foo1() << endl; cout << "第二次 foo2()=" << foo2() << endl; return 0; } ``` 在这个例子中,foo1()函数中的变量i被声明为静态变量,所以每次调用foo1()函数时,i的值会递增。而foo2()函数中的变量j没有被声明为静态变量,所以每次调用foo2()函数时,j的值都会重新初始化为10。\[3\]这就是C++中static关键字的用法。 #### 引用[.reference_title] - *1* *3* [C++ 语法篇之 static 用法](https://blog.csdn.net/yixiwuha/article/details/123145702)[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++ static用法总结](https://blog.csdn.net/kupe87826/article/details/121310136)[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 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值