`
kanwoerzi
  • 浏览: 1643210 次
文章分类
社区版块
存档分类
最新评论

static修饰全局变量 局部变量和函数时候的区别

 
阅读更多
 static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?

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

  从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。

  static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件  static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
  static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
  static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

分享到:
评论

相关推荐

    2023-04-06-项目笔记-第一阶段-12.2.2 修饰全局变量

    2023-04-06-项目笔记-第一阶段- 8.循环语句 8.1while循环的实例 9.函数 9.1函数的使用 10.数组 10.1.数组的使用 11....常见关键字 12.1关键字 typedef 12.2关键字static 12.2.1修饰局部变量 12.2.2修饰全局变量

    C语言中static的作用.pdf

    修饰全局变量: 若全局变量被声明为static,则称其为静态全局变量。静态全局变量的作用域仅限于定义它的源文件内,即外部文件无法通过extern关键字来引用此变量,增强了封装性。 修饰函数: 静态函数也是在全局...

    深入理解C语言 static、extern与指针函数

    •虽然static修饰变量的生存期很长,但它始终是局部变量,不能在其他函数中使用•static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 全局变量...

    浅谈C/C++中的static与extern关键字的使用详解

    一.C语言中的static关键字在C语言中,static可以用来修饰局部变量,全局变量以及函数。在不同的情况下static的作用不尽相同。(1)修饰局部变量一般情况下,对于局部变量是存放在栈区的,并且局部变量的生命周期在该...

    函数的程序设计实验.doc

    静态全局变量:静态全局变量也具有全局作用域,它与全局变量的区别在于如果程序包 含多个文件的话,它作用于定义它的文件里,不能作用到其它文件里,即被static关键 字修饰过的变量具有文件作用域。这样即使两个...

    快速了解C语言静态关键字static的作用

    2、用static修饰的局部变量,会延长局部变量的寿命,超出函数的生存期 3、对静态关键字修饰的局部变量的初始化 以下面两个变量a和变量为b进行说明,在编译过程中,发现变量a和b是静态变量,会标识变量a与b,等到程序...

    C#中static静态变量的用法实例

    使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员static修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型   静态全局变量 定义:在全局变量...

    探讨:程序在内存中的分配(常量,局部变量,全局变量,程序代码)问题

    全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4.另外还有一个专门放常量的地方。- ...

    C语言中static的作用及C语言中使用静态函数有何好处

    一是隐藏功能,对于static修饰的函数和全局变量而言 二是保持持久性功能,对于static修饰的局部变量而言。 三是因为存放在静态区,全局和局部的static修饰的变量,都默认初始化为0 下面我逐一给大家介绍: (1)先...

    为何关键字static在面试中频频被问?

    static修饰全局变量,那么该全局变量只能在本文件有效,只能在本文件被访问。 ③//函数支持跨文件访问 static修饰函数,那么该函数只能在本文件有效,只能在本文件使用。 #这就是我想分享给大家的,希望对你们有所...

    2023-04-06-项目笔记-第一阶段-12.2.3修饰函数

    2023-04-06-项目笔记-第一阶段- 8.循环语句 8.1while循环的实例 9.函数 9.1函数的使用 10....常见关键字 12.1关键字 typedef 12.2关键字static 12.2.1修饰局部变量 12.2.2修饰全局变量 12.2.3修饰函数

    C++ static关键字的原理及用法详解

    `static`关键字在C++中的使用确实涉及到多个方面,包括局部变量的存储期、全局变量和函数的链接属性,以及类成员的访问方式。正确使用`static`关键字可以帮助我们更好地管理变量的生命周期和访问范围,以及实现类的...

    C学习深入学习总结

    2.3 static修饰的全局变量和函数,在其他的文件中是否可以访问?如何访问? 5 2.4 你知道static是c语言中实现封装和隐藏的利器吗?你是否经常使用? 5 2.5 定义在不同源文件中的static全局变量,编译器是否允许他们...

    函数调用与堆栈

    把程序运行时一个变量占有内存空间的时间段...在定义局部变量时,可以为它们加上存储类修饰符auto、static和register来指出它们的生存期。 定义为static存储类型的局部变量具有静态生存期,它们也被存放在静态数据区。

    C/C++中的static的联系和区别

     在进程开始运行时初始化,C中static修饰变量和函数  静态变量  存储于全局变量区  静态局部变量:进程的运行过程中,函数退出不被销毁  静态全局变量:只能被本文件的函数调用访问,对其他源文件不可见  ...

    2023-04-06-项目笔记-第一阶段-14.指针 14.3指针变量的大小

    2023-04-06-项目笔记-第...常见关键字 12.1关键字 typedef 12.2关键字static 12.2.1修饰局部变量 12.2.2修饰全局变量 12.2.3修饰函数 13.#define 定义常量和宏 14.指针 14.1内存 14.2指针的使用实例 14.3指针变量的大小

    2023-04-06-项目笔记-第一阶段-13.#define 定义常量和宏

    2023-04-06-项目笔记-第一阶段- 9.函数 9.1函数的使用 10.数组 10.1....常见关键字 12.1关键字 typedef 12.2关键字static 12.2.1修饰局部变量 12.2.2修饰全局变量 12.2.3修饰函数 13.#define 定义常量和宏

    2023-04-06-项目笔记-第一阶段-14.指针 14.1内存

    2023-04-06-项目笔记-第一阶段- 9.函数 9.1函数的使用 10....常见关键字 12.1关键字 typedef 12.2关键字static 12.2.1修饰局部变量 12.2.2修饰全局变量 12.2.3修饰函数 13.#define 定义常量和宏 14.指针 14.1内存

Global site tag (gtag.js) - Google Analytics