C 联合一开始就没有填充吗?

2024-03-10

C99 标准中是否保证联合只会像结构一样在末尾进行填充?与此相关的是,联盟的地址是否始终等于其任何可能成员的地址?


  1. 是的。正如您所注意到的,结构从来没有前导填充。联合的地址始终引用联合的任何组件的第一个元素(具有适当的强制转换),因此联合的开头也不能有任何填充。

  2. 是的。经过适当的转换,联合的地址也是指向联合内任何元素的指针。

ISO/IEC 9899:2011

6.7.2.12 结构和联合说明符

¶15 在结构体对象中,非位域成员和位域的单位 驻留地址按声明顺序递增。一个指向a的指针 结构对象,经过适当转换,指向其初始成员(或者如果该成员是 位字段,然后到它所在的单元),反之亦然。可能还有未命名的 在结构对象内填充,但不在其开头。

¶16 工会的规模足以容纳其最大的成员。的值在 大多数成员可以随时存储在联合对象中。一个指向a的指针 联合对象,经过适当转换,指向其每个成员(或者如果成员是位字段, 然后到它所在的单位),反之亦然。

¶17 结构或联合的末尾可能有未命名的填充。

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

C 联合一开始就没有填充吗? 的相关文章

  • 检查两个数是否是彼此的排列?

    给定两个数字 a b 使得 1 例如 123 是 312 的有效排列 我也不想对数字中的数字进行排序 如果您指的是数字的字符 例如 1927 和 9721 则 至少 有几种方法 如果允许排序 一种方法是简单地sprintf将它们放入两个缓冲
  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • 将数组向左或向右旋转一定数量的位置,复杂度为 o(n)

    我想编写一个程序 根据用户的输入 正 gt 负 include
  • pthread_cond_timedwait() 和 pthread_cond_broadcast() 解释

    因此 我在堆栈溢出和其他资源上进行了大量搜索 但我无法理解有关上述函数的一些内容 具体来说 1 当pthread cond timedwait 因为定时器值用完而返回时 它如何自动重新获取互斥锁 互斥锁可能被锁定在其他地方 例如 在生产者
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • C - 找到极限之间的所有友好数字

    首先是定义 一对友好的数字由两个不同的整数组成 其中 第一个整数的除数之和等于第二个整数 并且 第二个整数的除数之和等于第一个整数 完美数是等于其自身约数之和的数 我想做的是制作一个程序 询问用户一个下限和一个上限 然后向他 她提供这两个限
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • C#:如何防止主窗体过早显示

    在我的 main 方法中 我像往常一样启动主窗体 Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application
  • 在 ASP.NET Core 3.1 中使用包含“System.Web.HttpContext”的旧项目

    我们有一些用 Net Framework编写的遗留项目 应该由由ASP NET Core3 1编写的API项目使用 问题是这些遗留项目正在使用 System Web HttpContext 您知道它不再存在于 net core 中 现在我们
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • 将 xml 反序列化为类,list<> 出现问题

    我有以下 XML
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke

随机推荐

  • ListGetAt 解析 CSV 文件时出现问题

    我有一个脚本 它从客户端读取 CSV 文件 并将这些值拆分为稍后将输入数据库的变量 这是当 CSV 中的列数少于所需的最小值时出现的错误 In function ListGetAt list index delimiters the val
  • 在python中手动绘制树状图

    我已经实现了一种算法来解决图中的聚类问题 我使用 python 库 python graph 来表示该图 现在 在计算的每一步 算法是迭代的 我必须绘制树状图的一部分 事实上 该算法是分裂的 从原始图开始计算簇的意义上来说 现在 我不知道用
  • “gprof”在特定代码行上花费的时间

    我一直在使用gprof分析器结合g 我的代码中有一个函数 它封装了与主要函数足够相关的几个行为部分 因此将它们分成自己的函数是没有意义的 我想知道在每个代码区域花费了多少时间 所以 如果你想象代码看起来像 function A A A B
  • C: IFS System() 漏洞

    出于教育原因 我必须利用 C 代码 该程序首先设置了egid 然后设置了漏洞system usr bin 命令 所以我在我的主目录中创建了一个 usr 可执行文件 并将路径设置为主目录PATH HOME PATH 我想将 bash 中的 I
  • 如何从字符串末尾获取数字

    我对 Ruby 还是个新手 有点卡住了 我需要从字符串末尾获取一个数字 假设我有字符串 potato85 我需要 85 数字中的位数可以有所不同 例如 potato8 potato8585 有什么方法可以分割字符串并获取第一部分和数字吗 使
  • JSON 概念与 JavaScript 和 PHP

    我需要有人来阐明这个问题 当一个人进行 AJAX 调用时 会调用一个 php 脚本 该脚本会回显 json encode 内容 以便 javascript 可以对其进行处理 注意 假设我们在 php 脚本中将 header 设置为 json
  • pudb调试器可以在windows上使用吗?

    我们有可能pudb http pypi python org pypi pudbWindows 上的 python 调试器 如果是 您如何安装并运行它 当我尝试使用安装它时ez setup http peak telecommunity c
  • ruby 如何处理 + 运算符?

    Ruby 不支持递增变量 例如variable 我看到这种行为 2 4 gives 6 事实上 任意数量的 两个变量之间的符号被视为一个单一的 ruby 是如何做到这一点的呢 既然 ruby 这样做了 是否可以将其视为不可用的原因 操作员
  • 同一个父辈下的2个看似独立的观点该如何互动

    请考虑以下场景
  • SQLite 错误:“无法将文本值转换为数值。”

    我找到了解决方法 但我对 Adob e Air 和 SQLite 遇到的问题完全感到困惑 一个UPDATE我认为在开发过程早期工作正常的查询突然开始失败并出现错误details could not convert text value to
  • Xamarin xml android:onClick 回调方法

    这是我的 XML 代码
  • 使路径在 Linux 和 Windows 上都有效

    我怎样才能确保这条路径 new Zend Log Writer Stream APPLICATION PATH logs app log 在linux和windows上都可以工作吗 在Linux中 路径分隔符是 在 Windows 中 可以
  • 通过 cmake 重用静态库的自定义 makefile

    我想这将是一个关于在 cmake 中包含具有现有 makefile 的库的通用问题 但这是我的背景 我正在尝试包括scintilla在另一个CMake项目中 我遇到以下问题 在 Linux 上 scintilla 有一个 makefile
  • C# RestSharp PUT 方法并发送原始字节 (protobuf)

    如何使用 HTTP PUT 方法发送字节数组 方法AddFile班级的RestRequest发送额外的标头 方法AddParameter需要一个Object type 我是怎么做的 byte data using var ms new Me
  • “运行方式 -> Android 应用程序”不再是我的 Eclipse 运行配置中的选项

    我在 Win7 机器上运行 Eclipse 3 7 2 我有 Android SDK 和 AVD 一切都运转良好 我有一个 Android 应用程序项目 已在 AVD 和真实 Android 设备上的模拟器下运行 亚行也运作良好 在某个时候
  • Jetpack 编写代码以在单击文本时向下滚动到特定 UI 元素的位置

    我试图在单击文本时向下滚动到特定 UI 元素的位置 我的文本的代码是 Text What is autosaving color colorResource id R color text highlight fontSize with L
  • 如何在android较低版本的设备上用javascript和html实现onclick?

    我正在开发一个在更高版本的设备中完美运行的项目 我已经在 4 1 2 版本中检查过它 问题是它不适用于 Android 版本 2 2 1 和 2 3 5 的设备 我有六张图像 我添加了功能 2 个图像的功能是使用 id 值调用不同的 HTM
  • 在 Visual Studio 2012 中,法语键盘上的向后导航快捷键是什么?

    自从我想知道如何使用 Visual Studio 中的向后和向前导航以来已经有一段时间了法语 fr FR 键盘 将鼠标悬停在按钮上 看起来像这样 Navigate backward Ctrl Navigate forward Ctrl Sh
  • Angular 6 私有方法

    我们正在从 Angular 5 升级到 Angular 6 我们有一个共享库 但遇到了构建错误 作为一家 Java 商店 我们养成了将组件方法和属性标记为私有的习惯 在 Angular 6 中构建我们的库时 转换并使用新的库 CLI 功能后
  • C 联合一开始就没有填充吗?

    C99 标准中是否保证联合只会像结构一样在末尾进行填充 与此相关的是 联盟的地址是否始终等于其任何可能成员的地址 是的 正如您所注意到的 结构从来没有前导填充 联合的地址始终引用联合的任何组件的第一个元素 具有适当的强制转换 因此联合的开头