【问题标题】:ergo wergo weigoergo 韦戈
【发布时间】:2013-08-31 01:51:40
【问题描述】:

/* patch.hoc 诉 1.2 2001 年 10 月 19 日 NTC */ load_file("nrngui.hoc") create soma // 模型拓扑 访问 soma // 默认部分 = soma

体感{ diam = 10 // 以 um 为单位的 soma 尺寸 L = 10/PI // 表面积 = 100 um^2 }

【问题讨论】:

  • 关于您最后的警告,您是否尝试打印 pointern1.next ?如果没有,请尝试n1.next->value。否则,将 %i 更改为 %p 如果它是您所追求的指针。
  • 哎呀,这是个错误。我编辑了。
  • 不要忘记设置n4.next = 0; /* or NULL */,这样您就可以识别列表的末尾。或者你可以设置n4.next = &n1; 来创建一个循环列表。
  • 这种尴尬的问题会跟着我到坟墓里。

标签: c struct compiler-errors linked-list


【解决方案1】:

您将struct ListNode 类型的变量分配给struct ListNode * 类型的变量。看起来您想将结构的 address 分配给指针,而不是它自己的结构。

试试这个:

n1.next = &n2;
n2.next = &n3;
n3.next = &n4;

【讨论】:

    【解决方案2】:

    尝试:

    typedef struct ListNode {
        int value;
        struct ListNode *next;
    } ListNode;
    

    否则你有一个匿名结构作为 typedef 在结构定义之后发生

    在此解释:Pointer to self struct in C

    【讨论】:

    • 为什么不干脆:struct ListNode; struct ListNode { int value; struct ListNode *next; };? Typedefs 很烂,因为在更大的代码中可读性和调试。
    • 我认为在这种情况下 typedef 提高了可读性,除非你想总是写struct ListNode。不确定对代码大小的影响会有多严重。
    • 在这种情况下,我更可能同意 ["Linux 内核编码风格第 5 章"][1] 论点。 [1]:kernel.org/doc/Documentation/CodingStyle 并且 LinkedNode 并不是一个不透明的对象,因为原始问题的作者正在访问该结构的部分而不使用任何适当的访问器函数。
    猜你喜欢
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2020-08-17
    • 2013-08-07
    • 1970-01-01
    相关资源
    最近更新 更多