结构体的部分初始化? [复制]

2023-12-30

是否可以静态初始化结构体的一部分?

我的结构:

   struct data {
    char name[20];
    float a;
    int b;
    char c;
};

首字母缩写和打印时:

struct data badge = {"badge",307};
printf("%s,%d\n", badge.name, badge.b);

这将打印出“badge”,但不会打印“307”。

我怎样才能使用这个char name[20] and int b同时忽略float a.


你可以使用C99指定的初始值设定项正如@sps建议的:

struct data badge = {.name = "badge", .b = 307};

但在 C89 中,无法仅初始化结构体的某些成员。 所以,你必须这样做:

struct data badge = {"badge", 0.0, 307, 0};

请注意,即使使用指定的初始化程序,未显式初始化的成员也将被零初始化。所以,以上两者是等价的。

但是使用指定的初始化程序,您无需显式初始化它(想象一下,如果您有一个包含 100 个成员的结构体 并且您只想为其中两个提供首字母缩写 - 就像在您的示例中一样)并使代码更易于阅读。

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

结构体的部分初始化? [复制] 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 局部变量以下划线开头是个好习惯吗?

    我刚刚接触 Ruby 并且来自 Java 和 C C 环境 在用 Ruby 编写第一个小项目时 我不知何故习惯了让所有局部变量都以下划线开头 我想我这样做的主要动机是更好的可读性以及与方法调用的区别 原则上只有三种类型的变量 global
  • PushViewController 是否保留控制器?

    我正在努力找出 PushViewController 是否保留控制器 目前我有以下代码 有效 ColorController colorController ColorController alloc initWithNibName nib
  • 内部类扩展

    在java中 假设我有以下类 public class A protected class B 我可以通过执行以下操作来扩展内部类吗 public class C extends A protected class D extends B
  • 任务并行库如何在终端服务器或 Web 应用程序中扩展?

    据我所知 当我执行 Parallel For 和类似构造之类的东西时 TPL 使用工作窃取队列来执行其任务 如果我理解正确的话 该构造将启动许多任务 每个任务将开始处理项目 如果其中一个任务完成了分配给他们的物品 它将开始从其他尚未完成的任
  • ionic 2:禁用登录表单输入焦点上的滚动

    我有一个使用 ionic 2 创建的登录表单 我想在键盘显示时禁用滚动 以下是示例 这是html登录的代码
  • 将外部属性添加到县的 TopoJSON 文件中

    相关问题 https stackoverflow com questions 17450273 adding external properties to topojson file 我正在尝试将外部属性添加到 topojson 文件 us
  • C# 6.0 TFS 构建

    我正在 Visual Studio 2015 CTP 中试用 C 6 0 的新功能 但我的项目无法在 TFS 2013 中构建 并且视觉工作室在线 http www visualstudio com en us products what
  • 获取嵌入式 IronPython v2 中的最后一条语句结果

    Mike Stall 博客中的这篇文章 https web archive org web 20151031235957 http blogs msdn com 80 b jmstall archive 2005 09 01 howto e
  • 确定连接到 Qt 中给定插槽的信号

    我已将自己注入到 Qt 应用程序中 并试图找出给定插槽连接到的信号 但找不到任何有关执行此操作的信息 是否有一种开箱即用的机制可以做到这一点 如果是这样 这是否暴露给 QtScript 如果没有 我可以很容易地将其包裹起来 如果没有这样的机
  • 如何检测图像是照片、剪贴画还是线条画?

    识别图像类型的最佳方法是什么 rwong s https stackoverflow com users 377657 rwong answer https stackoverflow com a 3446199 18437 on 这个问题
  • 如何使 iFrame 在单击按钮时全屏显示?

    我想使用 JavaScript 通过单击按钮使 iFrame 显示在全屏上 您必须做两件事 使窗口全屏显示 然后填满整个尺寸 您可以使用 JS 使其全屏显示 例如这个答案 https stackoverflow com
  • 如何使用XMPP框架检索成员聊天室列表?

    如何使用XMPP框架检索聊天室的成员列表 我尝试使用 void xmppRoom XMPPRoom sender didFetchMembersList NSArray items 但它返回一个空数组 有人请帮帮我吗 当您加入房间委托时 x
  • 在 Haskell 中比较两个项的构造函数的一般方法[重复]

    这个问题在这里已经有答案了 给定某些数据类型的两个项 t1 t2 是否有某种方法可以检查 t1 和 t2 是否以相同的构造函数开头 而不需要对构造函数进行一些详尽的案例或模式匹配 就像如果我的类型是 Either a b 那么我想要 che
  • 如何创建 50 个州的地图(而不仅仅是 48 个州)

    如何用 R 制作 50 个州的地图 看起来人们创建的所有示例地图都只是 48 级以下的地图 有很多方法可以做到这一点 就我个人而言 我发现谷歌拥有最有吸引力的地图 我建议ggmap googleVis 和 或RgoogleMaps 例如 r
  • 测试 WebApi 控制器 Url.Link

    我有以下控制器操作 public void Post Dto model using var message new MailMessage var link Url Link ConfirmAccount new model Id mes
  • 在 Ruby 中导出环境变量

    如何将 Ruby 脚本中的环境变量导出到父 shell 例如 实现一个简单的实现readbash 内置 usr bin ruby varname ARGV 0 ENV varname STDIN gets but have varname
  • Eloquent - 更新集合中的所有模型

    我想在集合的所有模型中设置某个属性 在简单的 SQL 中 UPDATE table SET att foo WHERE id in 1 2 3 我的代码 models MyModel findMany 1 2 3 models gt upd
  • 在表单提交时保留选项选择下拉列表中的所有多选值

    我正在使用多选下拉菜单here https silviomoreto github io bootstrap select examples The
  • CamcorderProfile.QUALITY_HIGH 分辨率产生绿色闪烁视频

    到目前为止我还没有找到任何解释 基本上 我有一个视频录制类 当我的三星 Galaxy S2 上的 setVideoSize 设置为 720 x 480 时 它的工作效果非常好 我希望它以尽可能高的分辨率进行录制 因此使用 Camcorder
  • 结构体的部分初始化? [复制]

    这个问题在这里已经有答案了 是否可以静态初始化结构体的一部分 我的结构 struct data char name 20 float a int b char c 首字母缩写和打印时 struct data badge badge 307