c - 这个值是如何计算的?

标签 c struct

这是大学以前的一篇论文。

初始化了一个struct:

struct double {int value; struct * double pred; struct * double succ;};

然后在main函数中:

main(...)
{
    struct double * d1, * d2, * d3;
    d1 = newDouble(33);
    d2 = newDouble(55);
    d3 = newDouble(77);
    d1 -> succ = d2;
    d2 -> pred = d1;
    d2 -> succ = d3;
    d3 -> pred = d2;

    printf("%d/n", d1->succ->succ->pred->value); // ??
}

我不明白的是 ->printf 中做了什么。我不知道实际值是多少。

最佳答案

-> 取消引用访问字段的指针:d1->succ(*d1).succ 的简写。

有了这个复杂的结构:d1->succ->succ->pred->value,你最终会得到 d2 的值,大概是 55:

  • d1->succd2
  • 所以d1->succ->succ等价于d2->succ,也就是d3
  • 所以d1->succ->succ->pred等价于d3->pred,也就是d2
  • 因此 d1->succ->succ->pred->value 等同于 d2->value

关于c - 这个值是如何计算的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11768625/

相关文章:

c++ - sigaction : using "void (*sa_sigaction)(int, siginfo_t *, void *);"

c - Linux 内核空间中的结构?

c++ - 将 lambda 用于回调函数作为 C 函数参数

c - 在c中读取1/2/5字符串输入

c - 功能不起作用,找不到我的错误

c - 将结构作为参数传递给 pthread

c++ - c中无符号整数的类型是什么?

创建输入文件大小未知的数组

c++ - 在对象方法中使用 new 运算符

c - 如何在C编程中从行中具有不同字数的结构中的文本文件读取数据?