`
younglibin
  • 浏览: 1214148 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

static变量的初始化,生存期,作用域

阅读更多

1、 初始化。

全局static变量的初始化在编译的时候进行。在main函数被调用之前初始化,并且,只初始化一次

函数static变量在函数中有效,第一次进入函数初始化。以后进入函数将沿用上一次的值。

2、 生存期。

生存期,main第一次执行,直到程序结束。比如下代码:

#include <stdio.h>

#include <stdlib.h>
int main()
{

if(true)

       {

              static int m=10;

       }

int c=0;

return 0;
}

尽管m变量在函数内部定义。但是它的生存期直到main函数执行完才结束。而非出了if语句的括号函数就结束。这是因为static变量不是存放在堆栈中的,而是存放在全局静态数据区中。

1、 作用域。

如果在{}中定义了static变量,则其作用域为{}内。例如上面的m变量就只能在{}内访问。如果有如下的代码:

#include <stdio.h>

#include <stdlib.h>
int main()
{

if(true)

       {

              static int m=10;

       }

int c=0;

printf("%d",m);

return 0;
}

将在printf报错:“error C2065: 'm' : undeclared identifier”。指示该变量没有定义。

如果static变量定义为全局的。则其拥有文件作用域:只在声明的文件中有效,其他源文件中不可见;同时有了static的生命周期。

如下:

//source.cpp

#include <stdio.h>

#include <stdlib.h>

int m=3;
int main()
{

if(true)

       {

              m=10;

       }

int c=0;

printf("%d",m);

return 0;
}

static变量在source.cpp文件中有效。

\

 

分享到:
评论

相关推荐

    C语言、变量和函数的作用域与生存期

    C语言中的变量和函数的作用域与生存期是编程中至关重要的概念,它们直接影响到代码的组织和执行效率。首先,我们来详细了解这些知识点。 **作用域(Scope)**: 作用域指的是变量或函数在程序中可见的范围。C语言中...

    实验9 - 变量的作用域与生存期

    - **静态变量(Static)**:静态变量的生存期跨越整个程序执行,即使定义在函数内部,它们也只在程序启动时初始化一次,直到程序结束才销毁。 - **全局变量**:全局变量的生存期从程序开始到程序结束,始终存在。 ...

    第16章、变量作用域和生存期上机指导(实践课).ppt

    ### 第16章 变量作用域和生存期上机指导 #### 一、引言 在本章节中,我们将深入探讨C语言中的变量作用域和生存期,并通过实际编程练习来加深理解。变量是程序设计中最基本的概念之一,正确理解和使用变量的作用域和...

    C语言中static变量使用方法

    1. **生存期与作用域**:静态局部变量的生存期覆盖整个程序,但其作用域仅限于定义它的函数内部。这意味着,即使函数退出,变量依然存在,但在函数外部无法访问。 2. **初始化与默认值**:静态局部变量支持初始化。...

    局部变量全局变量和存储分类局部变量作用域和生存期实用教案.pptx

    静态变量的生存期从程序开始到结束,而动态变量(如局部自动变量)的生存期从定义到离开其作用域。存储器类型决定了变量存储的位置,如寄存器、静态存储区和动态存储区。 总的来说,理解变量的作用域、生存期和存储...

    C语言课件:8-2作用域与生存期.ppt

    在C语言编程中,变量的作用域与生存期是理解程序控制流程和内存管理的关键概念。理解这两个概念,不仅可以帮助编写更加清晰和高效的代码,而且对于避免常见的编程错误也至关重要。接下来,我们将详细探讨变量的作用...

    变量的存储类型、外部变量、static内部变量讲解

    变量的存储类型决定了其生存期、作用域以及存储位置。理解这些概念对于有效地管理和优化内存使用至关重要。例如,选择合适的变量类型可以帮助减少不必要的内存分配与回收操作,提高程序性能。此外,合理使用`static`...

    C/C++中static作用

    `static`关键字主要用于控制变量和函数的作用域以及生存期,尤其在面向过程和面向对象编程中有着显著的差异。本文将深入探讨`static`在C/C++中的各种用途及其背后的机制。 #### 一、面向过程设计中的static ##### ...

    C++中四种对象生存期和作用域以及static的用法总结分析

    一、四种对象生存期和作用域 栈对象隐含调用构造函数(程序中没有显式调用) 堆对象隐含调用构造函数(程序中没有显式调用),要显式释放 全局对象、静态全局对象 全局对象的构造先于main函数 已初始化的全局变量或...

    C程序的结构实用PPT学习教案.pptx

    - **局部生存期**:在块作用域中声明的变量,从声明点到块结束。局部变量在每次函数调用时重新初始化。 - **动态生存期**:通过`malloc`、`free`、`new`、`delete`等动态内存管理函数创建和释放的变量,存在于内存...

    编程实例c语言要点详细下载

    **变量初始化**并不是强制性的,但强烈建议在使用变量前给其赋值。全局变量和静态变量通常会被初始化为0,而自动变量和动态分配的内存如果不初始化,则可能含有未定义的值,使用前需确保赋值。 **页抖动...

    static用法小结

    在C和C++编程语言中,`static`关键字有着重要的作用,它主要用于控制变量和函数的作用域和生命周期。下面将详细介绍`static`关键字的三种主要用法以及相关的知识点。 ### 1. 局部静态变量 局部变量通常在函数内部...

    c语言static用法总结

    - `static`则对应静态存储期,它改变了变量或函数的作用域和生存期,使得它们在整个程序运行期间都存在,但作用域可能被限制在声明它们的文件内。 理解`static`的关键在于它的两个主要特性:作用域限制和持久性。...

    C程序的结构实用学习教案.pptx

    - **静态生存期**:变量从程序开始到结束一直存在,例如文件作用域的变量和用`static`修饰的变量。静态变量在内存中的存储是静态分配的。 - **局部生存期**:变量在声明后到作用域结束时存活,如块作用域的自动...

    C程序的结构实用PPT课件.pptx

    本课件主要探讨了C程序中的块作用域、文件作用域、变量的生存期以及局部变量和全局变量的概念。 首先,我们来看块作用域。块作用域是指在一对花括号“{}”内的代码区域,比如函数体或者控制结构如if或for循环内。在...

    [二级C语言考试]用户标识符的作用域和存储类[参考].pdf

    (4)选项B是正确的,静态变量的生存期从程序开始到结束。 (5)题中,局部变量a覆盖了全局变量a,但在第二次使用时,全局变量a被递增。所以答案是B) 10。 (6)题考察静态局部变量的累积效果,每次调用f(),s都会...

    全局变量、局部变量、静态变量即内存管理

    静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。...

Global site tag (gtag.js) - Google Analytics