在结构体中动态分配结构体

2024-04-17

我正在动态分配一个具有不同结构作为成员的结构:

struct a {
   // other members
   struct b;
}

struct b基本上持有一个指向另一个的指针struct b,所以想到struct b作为链接列表。

如果我动态分配struct a,那么这也会产生一个新的struct b在其中。然而,这样做和拥有有什么区别?struct a持有一个指针struct b,并动态分配struct b within struct a?实施上有什么区别?


首先,让我们给出一些真正的定义来使其具体化。

struct b {
    int x;
};

struct a_with_b {
    struct b b;
}

struct a_with_b_ptr {
    struct b *bp;
}

当你封装一个结构体时,你只需要分配外部结构体(并​​且由于内部结构体不是指针,所以你使用.引用内部结构的成员):

struct a_with_b *a1 = malloc(sizeof(struct a_with_b));
a1->b.x = 3;

但是当你封装一个指针时,你必须独立分配每个指针并使用->当引用内部结构的成员时:

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

在结构体中动态分配结构体 的相关文章

随机推荐

  • 直接从浏览器发送文件到 S3 但更改文件名

    我在用签署授权的 S3 上传 https aws amazon com articles 1434这样用户就可以绕过我的服务器直接从浏览器上传文件到 S3 目前这可以工作 但文件名与用户计算机上的文件名相同 我想将其以不同的名称保存在 S3
  • Mercurial 合并两个命名分支:工作目录没有祖先

    我有两个命名分支 SPRINT 009 和 SPRINT 010 一些变更集已提交给 SPRINT 009 我想将其合并到 SPRINT 010 中 我能够毫无问题地将分支中的变更集合并回默认值 我在将变更集从branch one合并到br
  • Bash 中的多维关联数组

    我正在尝试创建一个多维关联数组 但需要一些帮助 我已审查过这个SO答案中建议的页面 https stackoverflow com questions 3020713 how to print bash varibles contents
  • facebook画布高度在ie8和firefox中没有设置滚动

    嘿 我想设置一个长页面应用程序 没有FB会限制我的应用程序的高度并附加滚动 我做了 iframes canvas 并在设置中自动调整大小并应用该代码 它限制了我在 ie 中显示滚动并在 firefox 中剪切内容 代码在这里 http pa
  • 在python中使用windows资源管理器浏览器存储文件路径

    我在 python 中编写了一些加密代码 它从用户那里获取原始输入消息 然后使用 AES 对其进行加密和解密 现在我想增强工作 我希望我可以从代码中打开 Windows 资源管理器并浏览到计算机上的任何文件 选择它 当我按 确定 按钮时 文
  • noscript 标签的正文样式?

    如果没有启用 JavaScript 我希望我的身体有overflow hidden 没有滚动条 我该如何解决这个问题 是否可以在 内部使用 noscript 标签并在其中设置特定样式 如果你的意思是对于 HTML 文档 我会构建 HTML
  • 根据 XSD 验证 XML 时忽略元素顺序

    我们有一个 XML 需要根据 XSD 进行验证 XML 由 XSTREAM 生成 我们正在使用 jaxp api 根据相应的 XSD 验证 XML 不幸的是 目前我们的测试用例失败 因为生成的 XML 的元素 标签的顺序 顺序与 XSD 不
  • 如何根据本地子网自动切换ssh配置?

    当我在某个网络 子网为 10 10 11 x 上时 我需要跳过中间主机才能到达目的地 因为我无法更改目的地端口 并且可以退出受限网络的端口有限 我成功地使用了如下所示的 ssh 配置 Host web direct web HostName
  • Android:即使视图滚动,如何将广告对齐到屏幕底部?

    之前我问过一个问题 至今没能解决 http stackoverflow com questions 3126347 android relativelayout how to alignparentbottom when wrapped i
  • 有没有办法通过 JNI 将 Java 数组传递给 C 而无需复制它?

    据我所知 使用GetDoubleArrayElements 是JVM决定是否复制Array的元素 这种情况下 有什么办法可以避免复制呢 如果没有 有没有其他方法可以从Java转移到C而无需复制 我正在传递非常大的数组 我希望我可以避免复制
  • Soapui 添加节点到请求 (Groovy)

    我遇到了问题 所以我得到了这样的 WSDL
  • 如何使用 python + NumPy / SciPy 计算滚动/移动平均值?

    numpy scipy 上似乎没有简单计算移动平均值的函数 导致复杂的解决方案 https stackoverflow com questions 12816011 weighted moving average with numpy co
  • 用 Ruby 测量两根弦之间的距离?

    我可以用 Ruby 测量两根弦之间的距离吗 I e compare Test est Returns 1 compare Test Tes Returns 1 compare Test Tast Returns 1 compare Test
  • IIS 6 上的多个域、相同的 Web 应用程序

    在 IIS 6 上 是否可以让多个域名指向同一个 Web 应用程序 并根据域名有条件地从 Web 应用程序内提供 CSS 我需要在同一个 Web 应用程序上托管数百个不同的 皮肤 皮肤取决于域名 而且我真的不想启动大量的 Web 应用程序
  • 如何以编程方式获取服务的状态(正在运行/已停止)

    我需要在我的 C 应用程序中获取 Windows 打印后台处理程序 服务的状态 shikarssj提供的功能运行良好 加载服务时只需要管理员权限 这是一个不需要完全许可的版本 include
  • Ionic/Cordova 更改 Android 导航栏颜色

    我正在尝试更改 Android 中导航栏的颜色 在底部 带有返回键和返回键 在没有硬件返回键和返回键的手机上 在我使用 Cordova 的 Ionic 应用程序中 有没有办法做到这一点 Example 发现了这个很棒的 cordova 插件
  • 如何设置 IntelliJ Idea Scala 项目来识别本地 Ivy2 缓存?

    您可能知道 新版本的 SBT 0 11 旨在维护公共库缓存 ivy2 cache而不是复制项目目录中的完整依赖项集 但是 IntelliJ Idea 我使用 SBT 插件生成 Idea 项目 默认似乎忽略了公共缓存 只看到放在项目目录下的库
  • 将 Python 转换为 R

    我知道有一个模块 rpy 和 rpy2 可以将 R 代码转换为 Python 有什么简单的方法可以做到相反吗 rpy 2 不转换代码 它只允许您通过 python 与 R 进行通信并从 python 中发出 R 命令的接口 鉴于 R 非常依
  • dyld:未加载库:@rpath/SwiftyJSON.framework/SwiftyJSON

    我一直在使用模拟器来测试我的应用程序 今天 我决定在模拟器中使用其他设备来测试它 令我惊讶的是 它在某些设备上启动时崩溃 而在其他设备上却运行得很好 我的应用程序构建运行于 iPad Air 可调整大小的iPad iPhone 5S iPh
  • 在结构体中动态分配结构体

    我正在动态分配一个具有不同结构作为成员的结构 struct a other members struct b struct b基本上持有一个指向另一个的指针struct b 所以想到struct b作为链接列表 如果我动态分配struct