自引用结构声明

2023-12-08

以下声明有效。

struct node
{
    int a;
    struct node *next;
};

然而,当我们定义以下内容时,它会给出错误。

"error: field ‘next’ has incomplete type"

为什么会这样呢?

struct node
{
    int a;
    struct node next; /* Not a pointer */   
};

node in struct node是一个“结构标记”,在您编写时它会创建一个“不完整类型”:此时尚未声明但未定义的结构变量。最终类型尚未完成};你的结构的。

在 C 中,即使在完全定义不完整类型之前,也可以通过使用指向该类型的指针来引用该类型。但是,您不能分配该类型的变量(实例),因为实际的结构定义尚未定义。 (如果您熟悉的话,它的工作方式与 C++ 中的抽象基类完全相同。)

所以当你写的时候

struct node {
  int a;
  struct node *next;
};

the row struct node *next意思是“这是一个指向结构节点的指针,尽管我还不知道该类型是如何定义的”。但你不能声明一个类型的变量struct node在该类型的结构定义中,仅仅是因为在创建某些东西之前你不能使用它。

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

自引用结构声明 的相关文章

随机推荐

  • 聚合数据帧列表并存储所有结果

    我有 9 个数据框的列表 每个数据框大约有 100 行和 5 6 列 我想根据所有数据帧中另一个列中指定的组来聚合列中的值 并将所有结果存储在单独的数据框中 为了阐明这一点 请考虑一个列表 1 Date Group Age Nov A 13
  • Hibernate 不会完全刷新实体子级

    我使用 Hibernate 5 1 0 Final 我的GenericDAO类主要方法 public T save T entity entityManager getTransaction begin entityManager pers
  • 如何删除 Symfony 2.7 中的弃用警告?

    Symfony 在日志和控制台中输出了可怕的 自 2 6 版本以来已弃用 并将在 3 0 中删除 错误 我遵循了我发现的所有声称可以解决该问题的指南 包括升级 sensio distribution bundle 并将 E USER DEP
  • 是否可以重新加载相同的 FXML/Controller 实例?

    Goal Implement a standard Settings GUI window Categories in a ListView on the left and the corresponding options in a Pa
  • OpenGL 打包正常

    我试图理解使用之间的区别GL INT 2 10 10 10 REV对于我的数据的正常情况 V S GLbyte 目前我正在将法线加载到glm vec4我这样包装它 int32 t floatToSignedNormalizedByte fl
  • 如何更改视频播放速度

    我想知道是否可以在 iPhone 应用程序中更改视频播放速度 我们希望用户对着麦克风大喊以加快播放速度并结束 您必须使用 setCurrent PlaybackRate
  • 在 Facebook 或 Twitter 授权后存储和检索用户收到的令牌

    您好 我目前正在尝试编写一个 MVC5 应用程序 该应用程序能够在通过 facebook 或 twitter 授权后存储用户收到的令牌 我想将其存储在数据库中而不是 cookie 中 并在用户将来的任何 API 请求和登录尝试中使用它 这样
  • 如何找到可见MKMapView可见屏幕区域的半径?

    我想知道iPhone屏幕中可见区域的半径 因为我会缩小和放大可见区域会发生变化 所以我想知道该特定区域的半径 我该怎么做 它不是所需的半径 您需要使用mapView 中的region 参数 查一下苹果文档 里面说的很清楚了 完成本教程 它会
  • 如何限制 Android Google 自动完成 API 仅获取火车站

    尽管有很多关于如何将 API 限制为特定国家 地区的答案 但找不到任何有关将其限制为火车站的信息 请帮我解决这个问题 谢谢 我认为目前 API 不支持此功能 我可以在 Places API Web 服务中看到启用此功能的功能请求 https
  • 在 numpy 数组中查找相同的行和列

    我有一个 nxn 元素的布尔数组 我想检查是否有任何行与另一行相同 如果有任何相同的行 我想检查相应的列是否也相同 这是一个例子 A np array 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0
  • 三元运算符比 Java 中的“if”条件更快吗?

    这个问题在这里已经有答案了 我很容易出现 如果条件综合症 这意味着我倾向于一直使用 if 条件 我很少使用三元运算符 例如 I like to do this int a if i 0 a 10 else a 5 When I could
  • 无法通过 Google Apps 脚本中的 YouTube 数据 API 从云端硬盘上传:空响应

    我正在尝试将文件列表从 Google 云端硬盘导入到 YouTube 元数据和文件的 URL 位于 Google 电子表格中 因此我使用 Google Apps 脚本编写了一些代码 该代码执行以下操作 获取选定的行 检索标题 描述 Goog
  • 使用 pyparsing 匹配非空行

    我正在尝试制作一个使用的小应用程序pyparsing从另一个程序生成的文件中提取数据 这些文件具有以下格式 SOME KEYWORD line 1 line 2 line 3 line 4 ANOTHER KEYWORD line a li
  • 如何在javascript中迭代链表

    有人分享了这种从数组创建链接列表的美丽而优雅的方法 function removeKFromList l k let list l reduceRight value next gt next value null console log
  • Microsoft Graph:当前经过身份验证的上下文对此请求无效

    我有一个使用 MSAL 和 v2 0 端点来登录用户并获取令牌的应用程序 我最近将其更改为 ADAL 和正常的 AAD 端点 也更改了应用程序 现在当我尝试使用 GraphService 时 出现以下错误 Current authentic
  • 重新缩放矢量 R

    假设我有一个整数向量 例如 gt x 1 1 1 1 4 4 13 13 14 我正在 R 中寻找一种有效的方法 将向量重新调整为整数 1 到元素的唯一数量的最大值 因此得到的向量将是 1 1 1 2 2 3 3 4 似乎是一个简单的问题
  • CSS3 动画中 Firefox 的背景图像

    我正在用 CSS 制作关键帧动画 由于支持 webkit 语法 动画似乎在 Chrome 中运行得很好 webkit keyframes title toggle from background image url images title
  • 如果字段值的数量限制为 4,则通过每个字段具有不同字段名称的文字对象传递泛型类型参数

    我在做什么 我想将对象逐个字段映射到某种通用类型的对象 我有 4 个运行时案例 运行时检查并在不匹配时抛出异常 我将它们用作原始对象的属性 false转变为Smth
  • 在学习网络开发时 我遇到了一个问题 这是我的代码 p text1 p div class primary text div text2 由于某种原因浏览器会转换 p to p p text p
  • 自引用结构声明

    以下声明有效 struct node int a struct node next 然而 当我们定义以下内容时 它会给出错误 error field next has incomplete type 为什么会这样呢 struct node