c++中的局部静态变量(Local Static Object)

    技术2022-05-20  37

    局部静态变量和全局静态变量都存储在静态内存中,所以函数退出后局部静态变量不会被释放;不同于全局静态变量的是,它不是file scope visible的,也就是说在file scope 范围内是不能访问的,只能是再次调用该函数时该变量可见。

     

    下面是转载的一段测试代码,来源于http://www.javaeye.com/topic/40705:

     

    #include"stdafx.h" #include <stdio.h> int* f1(int i) { static int s = 2; //局部静态变量,其只在本函数之内存在。但又与局部变量相区别,其在离开函数时并不消失 s = s +i; return &s; //可以返回地址 } void main() { int *a = f1(1); printf("cout:%d/n",*a); a = f1(1); // s只初始化一次 printf("cout:%d/n",*a); // //s = s+1; 出错,s在此范围不存在。其不是file scope }

    程序输出结果第一次为3,第二次为4。


    最新回复(0)