精华内容
下载资源
问答
  • 今天在工作中遇到了关于在被调用函数内部的局部变量声明为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; } }
  • static局部变量和普通局部变量区别?static函数和普通函数区别 原创Isanti2015 最后发布于2017-08-21 20:05:50 阅读数 1288 收藏 展开 几者的区别从三个方面考虑: 1初始化时间 2 作用域 3 分配内存空间 static...

    static全局变量和普通全局变量区别?static局部变量和普通局部变量区别?static函数和普通函数区别

    原创Isanti2015 最后发布于2017-08-21 20:05:50 阅读数 1288  收藏
    展开
    几者的区别从三个方面考虑: 
    1初始化时间 
    2 作用域 
    3 分配内存空间

    static全局变量和普通全局变量区别:

    区别:

      1.static全局变量编译是初始化,在main()函数之前初始化并且仅初始化一次; 
      2.static全局变量限定了作用范围,仅在定义该变量的源文件中有效,由于静态全局变量的作用域局限于一个源文件内,即文件作用域,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。全局变量可以跨越多个源文件有效,当然,其他不包含全局变量定义的源文件需要用extern关键字再次声明这个全局变量

    相同点:都是全局作用域,静态存储方式

    static局部变量和普通局部变量区别:

    区别

      1.static局部变量只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在。普通局部变量,只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。 
      2.静态局部变量在静态存储区分配空间,局部变量在栈里分配空间。

    相同点:两者都只有局部作用域

    static函数和普通函数区别:

    区别

      1.普通函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。好处:其他文件中可以定义相同名字的函数,不会发生冲突。 
      2.普通函数在C++类中编译后带一个隐藏的this参数,而static函数不带。

    相同的

    全局变量、静态全局变量以及静态局部变量都会被放在程序的静态数据存储区(全局可见)中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它们与堆变量、堆变量的区别。 
    而局部变量在栈里分配空间 
    从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。因此static这个说明符在不同的地方所起的作用是不同的。应予以注意。

    点赞 4
    ————————————————
    版权声明:本文为CSDN博主「Isanti2015」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/wangbeibei23/article/details/77455807

    展开全文
  • C语言使用static声明局部变量的用法及作用源码 C语言使用static声明局部变量的用法及作用源码 C语言使用static声明局部变量的用法及作用源码 C语言使用static声明局部变量的用法及作用源码 C语言使用...
  • static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答: 1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是...
    static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?   
    答:
    1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。   
    2) 从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。                  
    3) static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件   
    综上所述:
    static全局变量与普通的全局变量有什么区别:
    static全局变量只初使化一次,防止在其他文件单元中被引用;   
    static局部变量和普通局部变量有什么区别:
    static局部变量只被初始化一次,下一次依据上一次结果值;   
    static函数与普通函数有什么区别:

    static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝





    全局变量与静态变量

    static 声明的变量在C语言中有两方面的特征:
    1.变量被放在程序的全局存储区中,这样在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。
    2.变量用static告知编译器,自己仅在变量的作用范围内可见。这一点是它与全局变量的区别。
    Tips:
    A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;
    B.若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;
    C.设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;
    D.如果我们需要一个可重入的函数,那么,我们一定要避免函数中使用static变量(这样的函数被称为:带“内部存储器”功能的的函数)
    E.函数中必须要使用static变量的情况:比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。

    函数前加static使得函数成为静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件(所以又称内部函数)。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。

    扩展分析:术语static有着不寻常的历史。起初,在C中引入关键字static是为了表示退出一个块后仍然存在的局部变量。随后,static在C中有了第二种含义:用来表示不能被其它文件访问的全局变量和函数。最后,C++重用了这个关键字,并赋予它与前面不同的第三种含义:表示属于一个类而不是属于此类的任何特定对象的变量和函数(与Java中此关键字的含义相同)。

    全局变量、静态全局变量、静态局部变量和局部变量的区别

    变量可以分为:全局变量、静态全局变量、静态局部变量和局部变量。

    按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。

    按作用域分,全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,并且程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。

    全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。
    从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。

    static函数与普通函数作用域不同,只在定义该变量的源文件内有效。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。

    static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
    static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
    static函数与普通函数有什么区别:static函数与普通函数作用域不同,只在定义该变量的源文件内有效;

    全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知。



    人生是一场永不止息的旅行,我们被人海裹挟着向前,不能回头,走过的路,说过话,做过的事,无论对错,也再无更改的可能。——陈寻

    展开全文
  • 一、普通全局变量和普通局部变量的关系 通常情况下,如果有两个同名变量,一个是普通全局变量,另一个是普通局部变量,那么局部变量在其作用域内具有较高的优先权,它将屏蔽全局变量。 #include #include int ...
  • 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...
  • java中的变量类型有: ...局部变量声明在方法、构造方法或者语句块中; 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁; 访问修饰符不能用于局部变量...
  • static局部变量

    2018-03-28 10:33:11
    2.静态局部变量声明一次,一旦申请内存成功,不再接受重复申请。3.静态局部变量的作用域与一般局部变量一样,二者区别在于以上两点;一般局部变量在函数调用结束后释放变量占用的存储单元,而静态局部变量不释放。...
  • 使用static声明局部变量的生存期

    千次阅读 2016-03-24 16:19:19
    static声明局部变量,在程序执行前就产生,存放在内存的静态存储区,只能被赋值一次,生命周期整个程序,而不是从声明处开始。 它与全局变量的区别在于可见性:全局变量文件作用域,而static局部变量只在定义...
  •  1)成员变量定义:生存与该类的生命周期,变量存活周期跟你定义的该类实体对象一样;作用域是整个实体对象;可以在h文件中声明或者在m文件中@implementation上面添加的 #import "S1ViewController.h" @...
  • 静态局部变量和静态全程变量static

    万次阅读 多人点赞 2019-01-01 13:28:04
    我们知道在函数内部定义的变量,当程序执行到它的定义处时,编译器它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何...
  • java中的全局变量、局部变量static

    千次阅读 2018-07-15 16:34:03
    java中的变量类型有:类变量:独立于方法之外的...局部变量:类的方法中的变量。比如:public class Variable{ static int allClicks=0; // 类变量 String str="hello world"; // 实例变量 public vo...
  • 普通全局变量前面加上...由于静态全局变量的作用域限于一个源文件内,只能该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。static全局变量与普通全局变量区别 static全局变量只初始化一次,不能别其
  • 静态局部变量(static)用法

    千次阅读 多人点赞 2017-04-02 09:31:47
    有时希望函数中的局部变量的值在函数调用结束后不消失而保留...这时就应该指定该局部变量为静态局部变量(static local variable)。  例 静态局部变量的值。  #include using namespace std;  int f(int a) 
  • static 修饰的局部变量

    2016-06-14 10:08:46
    static 修饰的局部变量称为静态变量,存储在静态区,存储在静态区的变量,在程序运行时,静态变量的声明除了第一次执行时向内存中加载外,并在内存中保存值,其余再执行到静态变量的声明的地方时直接略过,直接使用...
  • 菜鸟在线C编译器:1)或2)  1. http://www.compileonline.com/compile_c_online.php  2....amp;type=c ...1.static全局变量只初使化一次,防止在其他文件单元中被引用;...2.static局部变量只被...
  • 局部变量和全局变量,extern和static

    千次阅读 2016-07-24 19:34:59
    局部变量和全局变量,extern和static
  • 其实这些变量都之所以叫局部变量,其作用域也只限于声明它的方法体内。在方法被调用时,这些局部变量获得内存空间,到方法执行结束时,他们所占据的内存空间就被释放。用完就释放。而static,public是用来声明全局...
  • (1)static全局变量和普通全局变量的区别 主要是作用域和使用范围的区别 static/静态全局变量作用域有限,局限在一个源文件内(定义它的源文件),不能被同一源程序的其他源文件使用,避免引起错误。(因而同名...
  • 常见的存储区域可分为: ...里面的变量通常是局部变量、函数参数等。 2、堆 由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,...
  • 经常被声明为常量,很少单独使用static声明变量 2.成员变量(实例变量,一般情况下应该把实例变量私有) 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null...
  • static修饰局部变量: 1,延长局部变量的生命周期到程序技术时,局部变量才会被销毁 2,并没有改变局部变量的作用域 static修饰局部变量的使用场合: 1,如果某个函数的调用频率特别高 2,这个函数内部的某个值...
  • 变量又分为局部变量和全局变量,但他们都在内存的静态区,静态变量只能被初始化一次。 静态全局变量,作用域仅限于被定义的文件中,其他文件即使用extern声明也没法使用它。准确地说作用域是从定义之处开始,到文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 181,295
精华内容 72,518
关键字:

局部变量声明为static