C++:Static修饰变量 vs Static修饰函数

2025-06-19 14:46:51

1、静态全局变量:Static修饰全局变量#include<iostream>#include<stdio.h>usi荏鱿胫协ng namespace std;static int j; // 静态全局变量int fun2(void){ j = 0; j++; return j;}int main(){ int k = 0, n = 0; for(k=0; k<10; k++){ n = fun2( ); printf("%d\n", n); } getchar(); return 0;}此时,静态全局变量的值与全局变量的值结果一致;只是作用域不同;

C++:Static修饰变量 vs Static修饰函数

2、静态局部变量:Static修饰局部变量#include<iostream>#include<stdio.h>usi荏鱿胫协ng namespace std;int fun1(void){ static int i = 0;//静态局部变量 i++; return i;}int main(){ int k = 0, m = 0; for(k=0; k<10; k++){ m= fun1( ); printf("%d\n", m); } getchar(); return 0;}此时,静态局部变量的值在程序运行期间不销毁;

C++:Static修饰变量 vs Static修饰函数

3、静态函数:Static修饰函数#include<iostream>#include<stdio.h>using namespace std;static int fun1(int i)//静态函数{ return i++;}int main(){ int k = 0, m = 0; for(k=0; k<10; k++){ m= fun1(k); printf("%d\n", m); } getchar(); return 0;}此时,静态函数运行过程和子函数运行过程一致,只是作用域不同;

C++:Static修饰变量 vs Static修饰函数

4、特别声明:(1)静态局部变量数据属于静态存储,在静态存储区内分配内存单元,在整个程序运行期间都不释放;...........动态局部变量属于动态存储,占动态存储区空间而不占用静态存储区空间,函数调用结束后立即释放空间。(2)静态局部变量时在编译时被赋值的,即自始至终只赋值一次,在程序运行时它已经有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。..........自动变量赋初值,不是在编译时进行的,而是在运行时进行,所以每调用一次函数就赋一次初值。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢