专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

静态变量的特点,深入理解静态变量

来源:小易整编  作者:小易  发布时间:2023-03-17 07:53
摘要:静态变量的特点,深入理解静态变量全局静态变量数据存储:已初始化的存储在数据区中的已初始化变量区。未初始化的存储在数据区中的未初始化变量区。作用域:文件作用域。本质:是受编译器按语法约束的全局变量。作用:私有化某些变量和方法,以文件为单位对源...

静态变量的特点,深入理解静态变量

静态变量的特点,深入理解静态变量
全局静态变量
  • 数据存储:

    • 已初始化的存储在数据区中的已初始化变量区。

    • 未初始化的存储在数据区中的未初始化变量区。

  • 作用域:文件作用域。

  • 本质:是受编译器按语法约束的全局变量。

  • 作用:私有化某些变量和方法,以文件为单位对源码进行控制和管理。

  • 生命周期:从所处模块装载到所处模块卸载。

探测全局静态变量生命周期
首先打印出全局变量的地址。

#include <stdio.h>#include <stdlib.h> static int g_nTest = 0x996; int main(){    printf("%p\r\n",&g_nTest);    system("pause");    return 0;}

静态变量的特点,深入理解静态变量

 
在mainCRTStartup()函数起始位置下断点,然后在内存窗口监测静态全局变量地址。
 

静态变量的特点,深入理解静态变量

 
单步步过,寻找影响全局静态变量内存地址的语句。
 

静态变量的特点,深入理解静态变量

 
可以看到其在断下时,全局静态变量地址的值就已经有了,因为已初始化的全局变量的值会被写入到exe文件中,所以其在模块加载时,就已经有了值,是在mainCRTStartup()函数之前的。
 
我们继续测试,在C++编译器环境下,将函数的返回值赋值给全局静态变量的情况。

#include <stdio.h>#include <stdlib.h>int GetInt(){    printf("Hello world!");    return 0x996;} int nTest1 = GetInt(); int main(){    system("pause");    return 0;}

静态变量的特点,深入理解静态变量

 
该函数在_cinit()中的第二个_initterm调用里被执行,_cinit()的作用为初始化浮点协处理器和初始化全局变量。

本文地址:百科问答频道 https://www.neebe.cn/wenda/931319.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


百科问答
小编:小易整编
相关文章相关阅读
  • win10环境变量怎么设置?在Windows 10中创建环境变量的3种方法(详细)

    win10环境变量怎么设置?在Windows 10中创建环境变量的3种方法(详细)

    设置环境变量是编程过程中经常需要做的事情,这里我们来讨论如何在Windows10中创建环境变量。Windows中的环境变量是包含有关系统环境和当前登录用户信息的值。除了Windows之外,环境变量也存在于微软之前的操作系统中,例如MS-D...

  • classpath环境变量作用,Java环境变量classpath的作用

    classpath环境变量作用,Java环境变量classpath的作用

    classpath环境变量作用,Java环境变量classpath的作用环境变量环境变量(environmentvariables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。环境变量是在操...

  • linux怎么设置环境变量,linux设置环境变量的6种方法

    linux怎么设置环境变量,linux设置环境变量的6种方法

    linux怎么设置环境变量,linux设置环境变量的6种方法Linux读取环境变量读取环境变量的方法:export命令显示当前系统定义的所有环境变量echo$PATH命令输出当前的PATH环境变量的值这两个命令执行的效果如下其中PATH变量...

  • 如何定义全局变量,C语言定义全局变量

    如何定义全局变量,C语言定义全局变量

    如何定义全局变量,C语言定义全局变量全局变量C语言提供了全局变量的定义,全局变量也称为:外部变量。全局变量就是定义在函数外的变量。它不属于大括号{}包含的某个代码块,所以,它的作用域不是在某个代码块内,是在整个源程序中。所以,可以在源程序中...

  • 静态变量的特点,深入理解静态变量

    静态变量的特点,深入理解静态变量

    静态变量的特点,深入理解静态变量全局静态变量数据存储:已初始化的存储在数据区中的已初始化变量区。未初始化的存储在数据区中的未初始化变量区。作用域:文件作用域。本质:是受编译器按语法约束的全局变量。作用:私有化某些变量和方法,以文件为单位对源...

  • 静态ip怎么设置,如何设置静态ip地址

    静态ip怎么设置,如何设置静态ip地址

    静态ip怎么设置,如何设置静态ip地址静态IP地址是网络上计算机或设备的唯一地址。与由网络分配并随时间变化的动态IP地址不同,静态IP地址是固定的。静态IP地址对于需要远程访问其计算机或设备的用户非常有用,因为它可以确保地址不会更改并且连接...

  • 变量名是什么意思,变量名的命名原则

    变量名是什么意思,变量名的命名原则

    变量名是什么意思,变量名的命名原则现在我们来看一下变量的三大组成部分。首先的就是变量名,它指向的就是等号右侧的值的内存地址,是用来访问右侧的值的。然后就是赋值符号‘=’等号,它是用来将变量值的内存地址绑定给变量名的。最后就是变量值,它是表示...

  • 自学Java2(保姆级教学)——常量与变量

    自学Java2(保姆级教学)——常量与变量

    自学Java2(保姆级教学)——常量与变量顾名思义,常量就是在程序运行过程中,其值不会发生改变的量;变量则是在程序运行过程中其值可以发生改变的量。常量比较好理解,这里着重讲变量,而变量的主要作用就是取值和修改值。首先我将书上对变量的解释写一...

  • 周排行
  • 月排行
  • 年排行

精彩推荐