精华内容
下载资源
问答
  • 2019-10-01 12:32:01

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

    static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
    static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
    static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。

    转载于:https://www.cnblogs.com/gzy-zju-edu/articles/4029902.html

    更多相关内容
  • 为什么要在全局变量上加上static修饰符为什么要在全局变量上加上static修饰符为什么要在全局变量上加上static修饰符 全局变量,会带来命名污染,全局可用,避免传参。 一个全局变量,天然的拥有外延性,可以被其它的...

    为 什 么 要 在 全 局 变 量 上 加 上 s t a t i c 修 饰 符 为什么要在全局变量上加上static修饰符 static

    全局变量,会带来命名污染,好处是全局可用,避免传参。

    一个全局变量,天然的拥有外延性,可以被其它的文件所引用

    static修饰全局变量以后,处延性消失,变成本文件内部的全局变量,可以有效避免全局变量的命名污染


    补充:

    static修饰,局部变量,修改了局部变量的生命周期。使其生命周期同进程或是main()函数。
    static变量若未初始化,则系统初始化为零,并且只进行一次初始化。
    
    auto修改的局部变量,存储在栈上,随有随开,用完即消
    
    展开全文
  • (1)static全局变量与普通的全局变量有什么区别?(2)static局部变量和普通局部变量有什么区别?(3)static函数与普通函数作用域有什么不同?(4)static函数与普通函数有什么区别? (1)static全局变量与普通的全局变量有...
  • 主要介绍了PHP变量作用域(全局变量&局部变量)&global&static关键字用法,结合实例形式分析了PHP全局变量与局部变量的作用域,以及global、static关键字功能与使用技巧,需要的朋友可以参考下
  • static全局变量和普通全局变量区别?static局部变量和普通局部变量区别?static函数和普通函数区别 原创Isanti2015 最后发布于2017-08-21 20:05:50 阅读数 1288 收藏 ... 1.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

    展开全文
  • static全局变量

    千次阅读 2017-09-06 21:39:27
    普通的全局变量也称外部变量,一个程序工程中,全局变量是整个工程都可见的,也就是说只需要工程内的某一个文件内定义全局变量一次,其他文件内都是可见的。而static全局变量的作用域仅限于所在文件内部,工程...

    一、普通全局变量

        普通的全局变量也称外部变量,在一个程序工程中,全局变量是整个工程都可见的,也就是说只需要在工程内的某一个文件内定义全局变量一次,在其他文件内都是可见的。其实说到全局变量,就必须涉及到两个概念:定义和声明。如果理解了定义和声明的关系,那就很好理解全局变量了。

        变量定义使用“数据类型+变量名称”的形式,编译器需要给他分配内存单元的;

        变量声明使用“extern 变量类型+变量名称”的形式,是告诉编译器我这个变量将在其他外部c文件中定义,我这里只是在外部用它。编译器就不给他分配内存空间,而等到真正遇到变量定义的时候再给他分配内存空间。

        所以说:在我们使用普通全局变量时,其实我们的初衷时能在整个工程内都能直接引用该全局变量,所以这里就只需要记住我们的全局变量只能定义一次,你可以把这一次定义的机会给工程内的任意一个源文件(.cpp或.c文件),然后你可以在其他文件中任意声明这个变量多少次。

        另外:我们一般不再头文件中定义全局变量,你倒是可以声明全局变量(即加extern关键字)


    二、static全局变量

        刚刚说了,普通全局变量也叫外部变量,那么加了static关键字的全局变量我们就可以称为“内部”变量,这里的“内部”指的是static全局变量的作用域范围,“内部”作用域是指变量所在的文件作用域,也就是说static全局变量的作用域仅限于所在文件内部,工程内的其他文件不可见。由于static关键字已经把普通全局变量“内化”了,所以static全局变量是不能用extern声明的,即extern和static组合使用会报错(博友可以自己在VS编译环境中测试)。其实这也就是static关键字的最大用处:隐藏,即把全局变量“隐藏”到本文件内部,其他文件不能访问。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。

        当然,对于全局函数来说,static的意义仅在于隐藏,而对于全局变量来说,static除了隐藏的还有包括“延长生命周期”和“默认初始化为0”两个功能。

    展开全文
  • static变量与全局变量

    千次阅读 2019-11-07 20:44:25
    一、程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分: 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的...
  • static全局变量与普通的全局变量有什么区别 ?2. static局部变量和普通局部变量有什么区别 ?3. static函数与普通函数有什么区别? 首先我们要知道两个概念:生命周期与作用域。 生命周期与作用域 生存周期: 变量...
  • 首先了解一下内存的分布图: 代码区 全局数据区 堆区 栈区 代码区:存储代码 全局数据区:static 数据, 全局变量, const常量 堆区:由程序员自己new出来的动态数据, 需要手动释放。...首先总结static全局变量...
  • static全局变量与普通的全局变量

    万次阅读 多人点赞 2018-03-12 21:58:59
    一、程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分:1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等...3、全局区(静态区)(static)— 全局变量和静态变量的存...
  • 静态变量static全局变量global

    千次阅读 2021-03-04 05:42:25
    静态变量static ,全局变量global静态变量java也叫类变量从名字可以看出它是属于某个类的而不是类的实例。它的关键字是static存储静态存储区,当程序执行,类的代码被加载到内存,类的静态变量就分配了内存空间,...
  • 1. 类变量:独立于方法之外的变量,用 static 修饰。 2.实例变量:独立于方法之外的变量,不过没有 static 修饰。 3.局部变量:类的方法中的变量。 比如: Java 局部变量 局部变量声明方法、构造方法或者...
  • 非静态全局变量的作用域是整个源程序,一个非静态的全局变量在各个源文件中都是有效的.静态全局变量限制作用域,仅仅定义该变量的源文件中有效,同一源程序的其他源文件不能使用它. 由于静态全局变量的作用域局限...
  • 没有static关键字出现,只能用全局变量来实现static的功能,之后static不仅实现了全局变量的功能,还做到了可以限制变量的使用范围。 存储静态存储区的变量程序运行的开始就进行初始化,也是唯一的一次初始...
  • 局部变量 函数内部定义的变量,包括main函数,都是局部变量,局部变量一般存储动态存储区...如果想要本源程序中,但是在全局变量定义使用它,需要extern外部变量说明一下; 如果想要同一个项目但是不同源程..
  • C语言中static全局变量与普通的全局变量区别

    万次阅读 多人点赞 2018-12-09 20:54:05
    1. static全局变量与普通的全局变量有什么区别 ?  全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。  全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者存储方式...
  • static变量和普通变量的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只定义该变量的源文件内...
  • C/C++ 中 static 的用法全局变量与局部变量 1. 什么是static? static 是 C/C++ 中很常用的修饰符,它被用来控制变量的存储方式和可见性。 1.1 static 的引入 我们知道函数内部定义的变量,当程序执行到它的...
  • C语言中static修饰全局或局部变量

    千次阅读 2021-01-05 11:14:17
    一、static修饰全局变量: 当一个进程的全局变量被声明为static之后,它的中文名叫静态全局变量。静态全局变量和其他的全局变量的存储地点并没有区别,都是.data段(已初始化)或者.bss段(未初始化)内,但是它只...
  • static全局变量与普通全局变量有什么区别?...这两者存储方式上并无不同,这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文...
  • 1、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?  答:全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量全局变量...
  • 1:static 定义的全局变量 只能这个文件中使用。 2:static函数中 只能使用static定义的变量
  • static表示“全局”或者“静态”的意思,用来修饰成员...  用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量。
  • 讲述了static,extern及全局变量的用法,通过实例讲解,上机运行通过,放心使用
  • static全局变量:相当于全局变量,但只定义该变量的源文件内有效, 同一源程序的其它源文件中不能使用它,而extern全局变量可以。 static局部变量:只定义的函数体内有效,第一次定义时初始化,后续再次进入子...
  • 这个系列作为【全网最强】的续作,内容上不会只是走马灯式的浏览知识点,而会对各个知识点进行精讲精析,达到真正熟练的地步。虽然说博主学习C语言不过两个多月,但也熟知重难点和易错点,会和大家一起分享学习。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 366,658
精华内容 146,663
关键字:

在所有全局变量前加static