`

C++ static关键字详解

    博客分类:
  • C++
阅读更多
1.预备知识:动态存储和静态存储
 
    内存中供用户使用的存储空间可以分为三部分,即: 程序区,静态存储区, 动态存储区
数据分别存放在静态存储区和动态存储区中。全局变量存储在静态存储区中,在程序开始执行时给全局变量分配存储单元,程序执行完毕就释放这些单元。它们的生命周期是整个程序运行的生命周期。在程序执行过程中它们占据固定的存储单元,而不是动态地分配和释放。
    在动态存储区中存放一下数据:1)函数的形参 2)函数中的自动变量(未加static声明的普通局部变量)3)函数调用时的现场保护和返回地址

2.static声明的局部变量
   
     函数中的局部变量,如果不用关键字static加以声明,编译系统对它们是动态分配存储空间的。函数的形参和在函数中定义的变量都属于这一类。在调用函数时,系统给形参和函数中定义的变量冬天分配存储空间,数据存储在动态存储区中。在函数调用结束时就自动释放这些空间。
    有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,即其占用的内存空间不进行释放,在下一次调用函数时保留上一次函数调用结束时的值。这时就应该声明该函数是静态局部变量。
    静态局部变量有以下几个特点:
   (1)静态局部变量在静态存储区中分配存储单元。在整个程序运行的过程中都不进行释放
   (2)为静态局部变量赋初值是在编译时进行的。只赋初值一次,在程序运行时就已经有初值了。
   (3)如果在定义局部变量时不赋初值,对静态变量自动赋值0 或空字符。
   (4)虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的,也就是说,在其他函数中它是“不可见”的。

3.static声明静态外部变量
   
    普通的外部变量可以供整个程序使用,在一个外部变量的源文件中声明的外部变量,在另一个文件中用extern关键字加以引用。
    用static关键字声明的外部变量,只能在其声明的源文件中进行访问,在其他文件中是无法访问的。因此,static关键字修饰的外部变量,为其加上了访问域。
   然而,值得注意的是,无论是加上static的外部变量或是没有加static的外部变量,数据都要存储在静态的存储区中。


4.总结
    static修饰全局变量,则该变量在本文件中有效;static修饰局部变量,则该变量可保存状态;static修饰函数,则函数仅在本文件中有效。

分享到:
评论

相关推荐

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

    ### C++ `static` 关键字的原理及用法详解 #### 一、引言 在C++编程语言中,`static`关键字扮演着至关重要的角色。它不仅可以用来控制变量和函数的可见性和生命周期,还能在类的设计中发挥独特的作用。正确地理解...

    C++面试基础之static关键字详解

    C++面试基础之static关键字详解 本文主要讲解了C++面试基础之static关键字的相关知识点,通过示例代码介绍了static关键字的作用和使用场景。 1. static关键字的作用 static关键字在C++中有多种用途,既可以修饰...

    C++中关键字的探讨

    这里我们将深入探讨几个重要的C++关键字:`const`、`static`、`sizeof`,以及操作符重载和动态内存管理的`new`与`delete`。 1. `const`关键字: `const`在C++中用于声明常量或常量引用。它确保变量的值在声明后不能...

    C++关键字详解[参照].pdf

    C++ 关键字详解 C++ 关键字是指在 C++ 编程语言中具有特殊含义的单词,用于定义变量、函数、类、对象等程序元素。这些关键字是语言的基础组成部分,理解和使用它们是编写高效、可读性强的 C++ 程序的关键。 一、...

    浅谈C++中的几个关键字static,const,inline.doc

    "C++中的static、const、inline关键字详解" C++ 中的 static 关键字是一种非常重要的修饰符,它可以控制变量的存储方式和可见性。静态变量的两大作用是控制存储方式和控制可见性。控制存储方式是指将变量存储在程序...

    有关JAVA关键字详解

    ### JAVA关键字详解:Static 关键字的深入理解与应用 #### 一、Static 关键字简介 在 Java 编程语言中,`static` 是一个非常重要的关键字,它被广泛应用于类成员变量、方法和代码块等场景之中。通过使用 `static` ...

    c++关键字解释大全

    ### C++关键字详解 在C++编程语言中,关键字具有特定的语法意义,它们由编译器识别并赋予特殊含义。下面将详细介绍一系列C++的关键字及其用途。 #### asm(汇编指令) - **功能**:`asm`关键字用于嵌入汇编代码到...

    C++基础关键字介绍.docx

    ### C++基础关键字详解 #### 一、引言 C++是一种广泛使用的面向对象的编程语言,它在软件开发、系统编程以及高性能计算等领域扮演着重要角色。掌握C++的关键字是学习这门语言的基础。本文将详细介绍C++中的一些...

    C/C++static详解

    C/C++ static详解 static 关键字是 C 和 C++ 中都存在的关键字,它主要有三种使用方式,其中前两种只在 C 语言中使用,第三种在 C++ 中使用(C 和 C++ 中具体微妙操作不尽相同,本文以 C++ 为准)。 局部静态变量 ...

    详解c++中的 static 关键字及作用

    在C++中,`static`关键字有着多重含义,特别是在类的上下文中,它用来定义静态成员变量和静态成员函数。让我们深入探讨一下这两个概念。 ### 静态成员变量 静态成员变量是属于整个类而不是类的任何特定实例的。这...

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

    在C/C++编程语言中,`static`和`extern`关键字扮演着至关重要的角色,它们影响着变量和函数的存储、生命周期以及作用域。下面将详细阐述这两个关键字的使用和意义。 首先,我们来看`static`关键字。在C语言中,`...

    c语言关键字的用法详解

    #### Static关键字的双面特征 在C语言中,通过“static”关键字声明的变量拥有两个显著的特性: 1. **持久存储**:“static”变量存储在全局存储区域,这意味着一旦被初始化,即使函数执行完毕,其值也会被保留,...

    c语言关键字的用法详解.pdf

    Static关键字是C语言中一个非常重要的关键字,它有多种用法和特点。本文将详细介绍Static关键字的用法和特点,并分析其在C语言中的应用。 Static的两方面特征 Static关键字在C语言中有两方面的特征: 1. 变量会...

    java51个关键字详解

    36. `static`:声明静态成员,静态变量和方法属于类,而非类的实例。 37. `strictfp`:确保浮点运算的精度符合IEEE 754标准。 38. `super`:用于访问父类的成员,特别是当子类重写了父类的方法时。 39. `switch`...

    C++中Static的使用方法

    ### C++中Static的使用方法详解 #### 一、Static的基本概念 1. **什么是Static?** - `static`是C++中的一个重要关键字,主要用于控制变量的存储方式和可见性。 - 在C++中,`static`可以用于局部变量、全局变量...

Global site tag (gtag.js) - Google Analytics