C 静态变量初始化

2023-12-02

我学了一些 C 语言并发现了静态变量的解释。 他们展示了这段代码:

#include<stdio.h>
int fun()
{
  static int count = 0;
  count++;
  return count;
}
  
int main()
{
  printf("%d ", fun());
  printf("%d ", fun());
  return 0;
}

我不明白为什么调用该函数两次就可以了,因为该行

static int count = 0;

实际上运行了两次... 我不明白这怎么可能...... 您实际上可以声明它两次吗?还是编译器第二次会忽略它?


这是初始化定义所在的位置(静态/全局)really与未初始化的定义后跟赋值不同。 从历史上看,前者甚至曾经有不同的语法(int count /*no '=' here*/ 0;).

当你这样做时:

int fun() {
  static int count = 0;
  //...
}

那么除了不同的范围(但不是生命周期)count,它相当于:

static int count = 0; //wider scope, same lifetime
int fun() {
  
  //...
}

在这两种情况下,静态变量都会在加载时初始化,通常与可执行文件中的其他静态变量和全局变量一起初始化。

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

C 静态变量初始化 的相关文章

  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • 未提供参数时如何指定 C# System.Commandline 行为?

    在我的控制台应用程序中 当未提供控制台参数时 将执行我指定列表 在本例中为参数 3 的任何处理程序 调用该处理程序时 布尔参数设置为 false 但对我来说 根本不调用它更有意义 如何防止这种情况发生并显示帮助文本 using System
  • 注销租约抛出 InvalidOperationException

    我有一个使用插件的应用程序 我在另一个应用程序域中加载插件 我使用 RemoteHandle 类http www pocketsilicon com post Things That Make My Life Hell Part 1 App
  • 如何将非静态类成员“std::bind”绑定到 Win32 回调函数“WNDPROC”?

    我正在尝试将非静态类成员绑定到标准WNDPROC http msdn microsoft com en us library ms633573 aspx功能 我知道我可以通过将类成员设为静态来简单地做到这一点 但是 作为一名 C 11 ST
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 在 LINQ 中按 Id 连接多表和分组

    我想按categoryId显示列表产品的名称组 这是我的代码 我想要我的视图显示结果 Desktop PC HP Red PC Dell Yellow PC Asus Red SmartPhone Lumia 720 Blue 我的组模型
  • 当我们想要返回对象的引用时,为什么我们在赋值运算符中返回 *this 而通常(而不是 this)?

    我正在学习 C 和指针 我以为我理解了指针 直到我看到这个 一方面 asterix 运算符是解引用的 这意味着它返回值所指向的地址中的值 而与号 运算符则相反 它返回值存储的地址记忆 现在阅读有关赋值重载的内 容 它说 我们返回 this因
  • 使用 LINQ2SQL 在 ASP.NET MVC 中的各种模型存储库之间共享数据上下文

    我的应用程序中有 2 个存储库 每个存储库都有自己的数据上下文对象 最终结果是我尝试将从一个存储库检索到的对象附加到从另一个存储库检索到的对象 这会导致异常 Use 构造函数注入将 DataContext 注入每个存储库 public cl
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 我可以使用 moq Mock 来模拟类而不是接口吗?

    正在经历https github com Moq moq4 wiki Quickstart https github com Moq moq4 wiki Quickstart 我看到它 Mock 一个接口 我的遗留代码中有一个没有接口的类
  • 如何在 32 位或 64 位配置中以编程方式运行任何 CPU .NET 可执行文件?

    我有一个可在 32 位和 64 位处理器上运行的 C 应用程序 我试图枚举给定系统上所有进程的模块 当尝试从 64 位应用程序枚举 32 位进程模块时 这会出现问题 Windows 或 NET 禁止它 我认为如果我可以从应用程序内部重新启动
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • WebSocket安全连接自签名证书

    目标是一个与用户电脑上安装的 C 应用程序交换信息的 Web 应用程序 客户端应用程序是 websocket 服务器 浏览器是 websocket 客户端 最后 用户浏览器中的 websocket 客户端通过 Angular 持久创建 并且
  • 当我使用 OpenSSL1.1.0g 根据固定的 p 和 g 值创建 Diffie Hellman 密钥协议密钥时,应该执行哪些检查?

    您好 我尝试通过这段代码使用修复 p 和 g 参数来制作 Diffie Hellman Keysanswer https stackoverflow com a 54538811 4706711 include

随机推荐

  • Tomcat 7 上部署时出现 Omnifaces 异常

    我正在尝试将 Omnifaces 2 1 添加到 Web 应用程序以使用 FullAjaxExceptionHandler 以及 Omnifaces 2 1 中可能的其他功能 我已阅读并关注了 BallusC 的以下帖子 但仍然陷入困境 如
  • 格式良好的 XML?标记名称和属性名称中的 XML 引用

    我一直在尝试确认我对 XML 规范的阅读 我的解释是 标签名称和属性名称中不允许使用预定义实体和数字字符引用 例如 XML 1 0 规范不允许这样做
  • MS Edge:IntersectionObserver。对你起作用吗?

    在任何人在这里付出太多努力之前 我已经有了一个令人讨厌的解决方法 我只是想知道是否有人可以使用它 Edge 版本 15 现已发布 并支持交叉观察器 用于延迟加载 我已经实现了它 它在所有支持它的浏览器中都可以正常工作 Chrome 和 Op
  • Rails 随机记录生成器

    我问自己是否有一个gem或一种方法可以用随机数据生成大量记录 对模型有效 目标是使用数据库中的大量数据来测试我的应用程序 我在网上没有找到任何内容 但我没有使用正确的关键字 你知道类似的事情吗 您可以使用Faker宝石 并且 以下是创建 1
  • 如何将查询语句记录到Neo4j服务器,可能吗?

    我想将整个查询语句记录到 Neo4j 服务器 但是 在搜索 SO 和文档之后我没有成功 我发现这个问题 Neo4j 服务器上记录的剩余查询 但是更改这些配置设置并没有达到我所希望的效果 我在 Golang 工作并使用Go CQ库与 Neo4
  • 如何让 Twitter Bootstrap Accordion 保持一组开放?

    我正在尝试使用 Twitter 引导程序使用手风琴和折叠插件来模拟 Outlook 栏 到目前为止 我已经实现了折叠和手风琴工作 但它目前允许折叠所有部分 我想限制它 以便始终显示一个且仅一个 这是我正在研究的一个 http jsfiddl
  • 用于在 JSON 数组中查找元素的索引

    我有一个看起来像这样的表 CREATE TABLE tracks id SERIAL artists JSON INSERT INTO tracks id artists VALUES 1 name blink 182 INSERT INT
  • 我是否正确解析此 HTTP POST 请求?

    首先我要说的是 我正在使用twisted web框架 Twisted web的文件上传没有像我想要的那样工作 它只包含文件数据 而不包含任何其他信息 cgi parse multipart没有像我想要的那样工作 同样的事情 twisted
  • 如何从Android中的普通java类调用Activity类[重复]

    这个问题在这里已经有答案了 我有一个 noraml java 类 在该类的构造函数中称为 ReceivedChat java 我想调用 Android 的 Activity public class ReceivedChat String
  • Grid.MVC 与 ASP.NET MVC 5 兼容吗?

    在我开始搞乱一些不起作用的东西之前 Grid MVC 可以与 ASP NET MVC 5 一起使用吗 在 gridmvc codeplex com 上他们只写 MVC3 4 但我想知道是否有人尝试过 MVC5 你尝试过 但没有成功 试试这个
  • 有没有办法可以将 GeoFireStore 查询与普通 Firestore 查询结合起来?

    我想查询我存储在名为 Users 的集合中的用户 每个用户都有年龄和体重等字段 有没有办法可以通过距使用 GeoFire 运行搜索的用户的距离来查询用户 并将其与 FireStore 搜索查询结合起来 例如 我是一名用户 正在寻找 20 英
  • .js 文件适用于 Chrome 和 Firefox,但不适用于 IE

    当在 IE11 中测试我的网站时 它的某些部分不起作用 我相信问题出在我的 custom js 文件上 因为所有问题都链接到该 js 不过 该页面在 Chrome 和 Firefox 中运行良好 我在页面的页脚中加载名为 custom js
  • Firebase 查询是否可扩展

    在我的应用程序中 要检查注册时是否使用了电子邮件 和用户名 我使用这样的查询 let emailRef Firebase url https photocliq5622144 firebaseio com users emailRef qu
  • SwiftUI:“onDrop”覆盖层在 LazyVGrid 中不会消失?

    我正在测试 Asperi 对单元格重新排序的出色答案 SwiftUI 使用 onDrag 和 onDrop 对单个 LazyGrid 中的项目重新排序 我遇到的问题是 当我简单地进入拖动模式然后放置到位时 覆盖层不会重置 请参见单元格 3
  • 在 Django 中使用 fullCalendar

    有点像这里发布的问题的后续 Django 通过自定义模板标签使用用户输入修改数据 但自从提出这个问题以来 我决定采取不同的方法 正如你所知 我是个新手 所以请放轻松 我希望 Django 应用程序中有一个每周日历 显示数据库中的班次 以下是
  • 如何防止 PowerShell 中的变量注入?

    Ansgar Wiechers 对最近 PowerShell 问题的评论再次触发了我 DO NOT use Invoke Expression关于一个安全问题 我已经在脑海中思考了很长时间并且需要问 强烈的声明 参考调用表达式被认为是有害的
  • 右上角菜单选项

    I am not able to set the background image for the title bar i can only set color let me know what i have to change in th
  • 使用 Knockout 'foreach' 循环多维数组

    我有一个多维关联数组 this items ko observableArray name name1 viewable true children name name1 1 viewable true children name name
  • 如何在活动之间传递双数组(布尔[][])?

    我看不到将双布尔数组传递给另一个活动 我使用 putExtra 当我检索它并将其投射到boolean 它指出它无法投射并崩溃 然而 Boolean 是有效的 我该如何通过boolean 活动之间 如果您绝对需要一个 boolean 并且不能
  • C 静态变量初始化

    我学了一些 C 语言并发现了静态变量的解释 他们展示了这段代码 include