静态局部变量什么时候出现?

2023-11-30

这本书Robert Lafore 的 C++ 面向对象编程 says,

静态局部变量具有自动局部变量的可见性 变量(即在包含它的函数内部)。然而,其 生命周期与全局变量的生命周期相同,只是它 直到第一次调用该函数时才存在 包含它。此后它在人的一生中一直存在 程序

第一次调用函数后存在意味着什么?静态本地存储是在程序加载到内存时分配的。


存储空间是之前分配的main输入,但是(例如)如果静态对象具有带副作用的构造函数,则这些副作用可能会延迟到第一次调用该函数之前。

但请注意,这不是一定案子。仅需要在进入该块之前进行常量初始化(不一定只是在执行“跨越”该定义时进行)。同样,在某些情况下,允许实现比所需的更早地初始化其他块范围静态变量(如果您想了解具体情况,可以查看 [basic.start.init] 和 [stmt.dcl] ,但它基本上可以归结为:只要它不影响它初始化的值。例如,如果您有类似的内容:

    int i;
    std::cin >> i;
    { 
        static int x = i;

...该实现将无法初始化x直到进入该块,因为直到他们才知道初始化该块的值。另一方面,如果您有:

{ 
     static int i = 0;

...该实现可以尽早执行初始化(并且大多数将/将基本上在编译时执行此类初始化,因此它不会涉及执行any运行时的指令)。然而,即使对于不那么简单的情况,在逻辑上可能的情况下也允许提前初始化(例如,该值不是来自先前的执行)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

静态局部变量什么时候出现? 的相关文章

  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 如何获取子对象的全局/世界位置?

    如何获取一个 Object3D 在另一个 Object3D 中的全局位置 setup var parent new THREE Object3D parent position set 100 100 100 var child new T
  • 键入时即可访问带结果的多字段搜索

    大家早上好 我今天的问题是关于多领域搜索 我有一个拆分表单 字段和单个记录位于顶部 数据表视图中的所有数据位于底部 我有多个想要搜索的字段 以便用户可以根据多个条件找到特定的人 这是一位同事帮助我完成的 VBA 现在运行良好 我想添加一个b
  • Update 3 后 Visual Studio 2013 Premium 解决方案加载错误

    我安装了 VS2013Update 3 现在打开解决方案时出现错误 Microsoft VisualStudio Web Publish WebPublishPackage MircosoftVisualStudio Web Publish
  • Ruby 中的映射和收集之间的区别?

    我用谷歌搜索了这个 得到了不完整 矛盾的意见 做一个实际上有什么区别吗 map并做一个collect在 Ruby Rails 中的数组上 The docs似乎没有提出任何建议 但是方法或性能可能存在差异吗 其实没有什么区别map在 C 中实
  • Polars:通过算法取消嵌套列,无需 for 循环

    我正在使用用嵌套结构 有时是多层深度 编写的多个镶木地板数据集 我需要输出一个扁平的 无结构 模式 现在我能想到的唯一方法是使用 for 循环来迭代列 这是一个简单的例子 我在其中进行循环 while len x name for x in
  • emacs24 中的词法评估

    谁能解释一下怎么做eval与 emacs24 一起工作吗 从eval描述 eval is a built in function in C source code eval FORM optional LEXICAL Evaluate FO
  • 如何使用自定义 Dropwizard 过滤器有选择地保护资源

    我正在使用 Dropwizard 0 9 2 我想创建一个不需要 GET 身份验证而需要基本 POST 身份验证的资源 我努力了 Path protectedPing Produces MediaType TEXT PLAIN public
  • pip 缓存文件夹在哪里?

    Python pip 缓存文件夹在哪里 我在安装过程中遇到错误 现在使用缓存文件重新安装软件包 那个目录在哪里 我想对它们进行备份以便将来安装 是否可以 例如我有这个 Using cached cssselect 0 9 1 tar gz
  • 如何将 C++ 字符串转换为 int? [复制]

    这个问题在这里已经有答案了 可能的重复 C 将字符串转换为int 我让用户按顺序输入 9 个数字 我需要将字符串数字转换为 int string num int num int product 10 cout lt lt enter num
  • Magento 前端(会话)cookie

    我在我的 magento 商店的 IE 中出现一些奇怪的行为 丢失了前端 会话 cookie 有人知道在magento代码中前端cookie的设置在哪里吗 Thanks 阿法克 frontend cookie 在分派当前操作之前设置 看一下
  • VB6 中未设置变量的默认值是多少?

    我正在使用一些旧代码 它定义了一个像这样的全局变量 Public myvar 该变量从未被赋值 但稍后在测试中使用 If myvar lt gt somevalue then do something End If 为了某种价值的什么价值
  • X86 编码近调用相对偏移量

    假设我有以下一组说明 00E79E00 E8 AE580000 CALL someprocess 00E7F6B3 00E79E05 85C0 TEST EAX EAX output taken from OllyDbg 如何对近调用 0x
  • [Int] 和 Array 有什么区别?

    let numberList Array 1 10 type Array
  • 方法名称必须以 findBy 或 findOneBy 开头。 Symfony 未定义方法?

    我正在努力通过Symfony2 的第 4 部分 在更新控制器和帮助程序类代码时 我收到以下错误消息 Undefined method getLatestBlogs The method name must start with either
  • 编译时在浮点型和双精度型之间切换

    如果我想在编译时在浮点精度和双精度之间切换 我应该在哪里查看 就像 如果用户想要所有内容都是浮点数而不是双精度 我如何保持这种灵活性 换句话说 我应该如何定义一个可以有条件地浮点或双精度的变量 如果可以在编译时进行切换 一个简单的方法typ
  • 为什么内联 div 的行为与内联 span 不同

    我尝试过内联 div 但它不起作用 很难解释 请看下面的链接 http jsfiddle net CsS5v 1 p style background red SDFDSDSFDSSFDAFASasf br span style backg
  • PHP:如何重命名方法?

    PHP 5 2 中是否可以在运行时重命名类方法 是否可以使用反射来做到这一点 Given class Test public function myMethod echo in my method 我希望能够重命名myMethod to o
  • ng-include 和 ngRoute:如何让它们一起工作? (即路由到 ng-include 中的视图)

    EDITED 我的应用程序具有以下结构 索引 html
  • 如何在 C 中进行 Base64 编码(解码)?

    我在 unsigned char 变量中有二进制数据 我需要在 c 中将它们转换为 PEM base64 我查看了 openssl 库 但找不到任何函数 有谁有任何想法吗 这是我正在使用的 include
  • 静态局部变量什么时候出现?

    这本书Robert Lafore 的 C 面向对象编程 says 静态局部变量具有自动局部变量的可见性 变量 即在包含它的函数内部 然而 其 生命周期与全局变量的生命周期相同 只是它 直到第一次调用该函数时才存在 包含它 此后它在人的一生中