精华内容
下载资源
问答
  • 今天在工作中遇到了关于在被调用函数内部的局部变量声明为static类型的作用,做一下使用总结。     例如一个被调用函数如getBuffer() char* getBuffer() {  static char dd[100]="abcdefg";  char * ...

     今天在工作中遇到了关于在被调用函数内部的局部变量声明为static类型的作用,做一下使用总结。

     

     

    例如一个被调用函数如getBuffer()

    char* getBuffer()

    {

         static char dd[100]="abcdefg";
          char * buf=dd;
          return buf;
      
    }

    如果有个函数会对getBuffer()的dd数组进行连接操作,加入第一次在“abcdefg”后面连接上“hlk”,

    当第一调用getBuffer时,数组达dd发生了改变,变长了。等第二次调用getBuffer时,并对dd数组继续进行连接加长时,第二次再调用getBuffer时就可以在“abcdefghlk”的基础上连接。如果没有生命数组dd是static的,第二次调用时只能在“abcdefg”的基础上连接。

    展开全文
  • 如下代码是错误的: public class example{ public void method(){ static int i=0; } }
  • C++static声明静态局部变量在C++中,有时会希望函数中局部变量的值在函数调用结束后不消失,而保留原来的值,也就是其占用的存储单元不释放,在下一次调用该函数时,这个变量还保留上一次函数调用结束时的值,这是就...

    25fd32e94dc1c7108f6f94dc62c38b39.png

    C++static声明静态局部变量

    在C++中,有时会希望函数中局部变量的值在函数调用结束后不消失,而保留原来的值,也就是其占用的存储单元不释放,在下一次调用该函数时,这个变量还保留上一次函数调用结束时的值,这是就需要指定该局部变量为静态局部变量。

    静态局部变量和自动变量的区别

    • 静态局部变量在静态存储区内分配存储单元, 在整个程序运行期间都不释放。
    • 自动变量属于动态存储类别,存储在动态存储区空间,函数调用结束后即释放。
    • 静态局部变量赋初值是在编译时进行值的, 即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋初值,只是保留上次函数调用结束时的值。
    • 自动变量赋初值,不是在编译时进行的,而是在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。
    • 如果在定义局部变量时不赋初值的话,对静态局部变量来说,编译时自动赋初值0或空字符。
    • 对自动变量来说,如果不赋初值,则它的值是一个不确定的值。

    虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的,也就是说,在其他函数中它是不可见的。

    经典案例:C++实现输出静态局部变量。

    源码分析:

    #include<iostream>//头文件 
    using namespace std;//命名空间 
    int Fun(int num1)//自定义Fun函数 
    {
      auto int num2=0;//定义自动变量且赋初值 
      static int num3=3;//定义静态局部变量 
      num2=num2+1; 
      num3=num3+1;
      return num1+num2+num3;//将num1+num2+num3的和返回到函数调用处 
    } 
    int main() //主函数 
    {
      int i,num;//定义整型变量 
      num=2;//赋初值 
      for(i=0;i<3;i++)//循环 
      {
        cout<<Fun(num)<<" "<<endl;//循环输出Fun(num)的值 
      }
      return 0; //函数返回值为0 
    }
    

    编译后的结果:

    7
    8
    9
    
    --------------------------------
    Process exited after 1.76 seconds with return value 0
    请按任意键继续. . .
    
    5.6 C++static声明静态局部变量 | 用static定义变量mp.weixin.qq.com
    展开全文
  • C++static声明静态局部变量 在C++中,有时会希望函数中局部变量的值在函数调用结束后不消失,而保留原来的值。 也就是其占用的存储单元不释放,在下一次调用该函数时,这个变量还保留上一次函数调用结束时的值,这是...

    C++static声明静态局部变量

    在C++中,有时会希望函数中局部变量的值在函数调用结束后不消失,而保留原来的值。

    也就是其占用的存储单元不释放,在下一次调用该函数时,这个变量还保留上一次函数调用结束时的值,这是就需要指定该局部变量为静态局部变量。

    静态局部变量和自动变量的区别

    静态局部变量在静态存储区内分配存储单元, 在整个程序运行期间都不释放。

    自动变量属于动态存储类别,存储在动态存储区空间,函数调用结束后即释放。

    静态局部变量赋初值是在编译时进行值的, 即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋初值,只是保留上次函数调用结束时的值。

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

    如果在定义局部变量时不赋初值的话,对静态局部变量来说,编译时自动赋初值0或空字符。

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

    虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的,也就是说,在其他函数中它是不可见的。

    经典案例:C++实现输出静态局部变量。

    源码分析:

    #include<iostream>//头文件 
    using namespace std;//命名空间 
    int Fun(int num1)//自定义Fun函数 
    {
      auto int num2=0;//定义自动变量且赋初值 
      static int num3=3;//定义静态局部变量 
      num2=num2+1; 
      num3=num3+1;
      return num1+num2+num3;//将num1+num2+num3的和返回到函数调用处 
    } 
    int main() //主函数 
    {
      int i,num;//定义整型变量 
      num=2;//赋初值 
      for(i=0;i<3;i++)//循环 
      {
        cout<<Fun(num)<<" "<<endl;//循环输出Fun(num)的值 
      }
      return 0; //函数返回值为0 
    }
    

    编译后的结果:

    7
    8
    9
    
    --------------------------------
    Process exited after 1.76 seconds with return value 0
    请按任意键继续. . .
    

    C++用static定义变量

    更多案例可以go公众号:C语言入门到精通

    展开全文
  • C++static声明静态局部变量在C++中,有时会希望函数中局部变量的值在函数调用结束后不消失,而保留原来的值,也就是其占用的存储单元不释放,在下一次调用该函数时,这个变量还保留上一次函数调用结束时的值,这是就...
  • C++static声明静态局部变量在C++中,有时会希望函数中局部变量的值在函数调用结束后不消失,而保留原来的值,也就是其占用的存储单元不释放,在下一次调用该函数时,这个变量还保留上一次函数调用结束时的值,这是就...
  • 1、关键字static的作用是什么?  定义静态变量  2、static有什么用途?(请至少说明两种)  ...(1)对局部变量static声明,则该变量分配的空间在整个程序执行期间始终存在;  (2)全局变量用static声明
  • 1、关键字static的作用是什么?  定义静态变量  2、static有什么用途?...(1)对局部变量static声明,则该变量分配的空间在整个程序执行期间始终存在;  (2)全局变量用static声明
  • java内部类访问局部变量时局部变量必须声明为final,同样,在线程中使用局部变量时,需将局部变量声明为final。 public class Thread2 { private static int num = 0; public static synchronized void print...
  • C++static声明静态局部变量在C++中,有时会希望函数中局部变量的值在函数调用结束后不消失,而保留原来的值,也就是其占用的存储单元不释放,在下一次调用该函数时,这个变量还保留上一次函数调用结束时的值,这是就...
  • static声明局部变量

    2013-06-15 16:21:56
    有时候声明函数中的局部变量的值在函数调用结束后...这时就应该指定该局部变量为“静态局部变量”,用关键字static进行声明。例如: #include void main() {  int f(int a);  int a=2,i;  for(i=0;i  print
  • 1.局部变量 局部变量也称为内部变量。...函数中的局部变量,如不专门声明为 static 存储类别,都是动态地分配存储空间的,数 据存储在动态存储区中。函数中的形参和在函数中定义的变量(包括在复合语...
  • static声明局部变量后,使得该变量值函数调用结束后 // // main.c // test // Visual Studio 2010 // Created by AirDebug on 2020/2/15. // Copyright @ 2020 AirDebug. All rights reserved. // #...
  • 使用static声明局部变量的生存期

    千次阅读 2016-03-24 16:19:19
    static声明局部变量,在程序执行前就产生,存放在内存的静态存储区,只能被赋值一次,生命周期整个程序,而不是从声明处开始。 它与全局变量的区别在于可见性:全局变量文件作用域,而static局部变量只在定义...
  • 经常被声明为常量,很少单独使用static声明变量 2.成员变量(实例变量,一般情况下应该把实例变量设为私有) 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null...
  • 当一个进程的全局变量声明为static之后,它的中文名叫静态全局变量。静态全局变量和其他的全局变量的存储地点并没有区别,都是在.data段(已初始化)或者.bss段(未初始化)内,但是它只在定义它的源文件内有效,...
  • 声明在方法中或是代码块中的变量称之为局部变量。 只在声明变量的方法或代码块中有效。 **代码块:**用一组大括号{}括起来的一个代码段。 全局变量(成员变量) 声明在类中,方法外。 在整个类中都有效 注意:...
  • 全局变量(文件作用域变量) 声明在函数体外的变量,全局变量的作用域,即具有文件作用域,如果要在...局部变量 声明定义在函数体内的变量。 static+全局变量 全局静态变量,改变了全局变量的作用域,使...
  • 其实这些变量都之所以叫局部变量,其作用域也只限于声明它的方法体内。在方法被调用时,这些局部变量获得内存空间,到方法执行结束时,他们所占据的内存空间就被释放。用完就释放。而static,public是用来声明全局...
  • 局部变量和全局变量的区别 局部变量定义在一个函数内部,在函数之外是不可访问的。(或者说定义在一个以{}限的区域内) 全局变量定义在所有函数之外,并且在其作用域内的所有函数都可以访问。下面做详细讲解。 ...
  • 数组的声明并不是声明一个个单独的变量,比如 number0、number1、…、number99,而是声明一个数组变量,比如 numbers,然后使用 numbers[0]、numbers[1]、…、numbers[99] 来代表一个个单独的变量。数组中的特定元素...
  • public class Main6 { public static void main(String[] args){ for (int i = 0; i < 10; i++) int id=i; ...上面程序的运行结果:编译错误 ...局部变量声明的作用在一个块内...
  • Static变量的作用

    2016-07-31 21:47:41
    1. 全局变量声明为Static全局变量 全局变量是静态存储方式,Static全局变量也静态存储方式,存储方式一样。 但是非静态全局变量的作用域是...一旦局部变量声明为Static,就改变了局部变量的存储方式和生存期,static
  • 画一条垂直线穿过上述指针声明的星号位置,如果const出现在线的左边,指针指向的数据常量; 如果const出现在线的右边,指针本身常量,不能改变指针P的指向。 (PS:人家说这样很简单,但是我觉得还是很难记。。...
  • c语言全局变量和局部...设置变量的存储域(存储在静态存储区内)谭浩强C语言page180:(1)对局部变量static声明,则该变量分配的空间在整个程序执行期间始终存在;(2)全局变量用static声明,则该变量的作用域只限...
  • 局部变量保存在栈中,只有在所在函数被调用时才动态地变量分配存储单元。 区分三种变量的特点,如果只看声明位置和访问范围,肯定不够深刻的,需要进一步理解在内存中的不同。所以,这里我...
  • C/C++中static关键字详解  静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其... 如果一局部变量声明为static,那么将只有唯一的一个静态分配的对象,它被用
  • Java-002 声明局部变量

    2019-07-13 08:41:54
    定义局部变量的基本语法格式同定义成员变量类似,所不同的是不能使用public、protected、private和static关键字对局部变量进行修饰,但可以使用final关键字。 [final] <变量类型> <变量名> final:可选...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,382
精华内容 552
热门标签
关键字:

局部变量声明为static