这是大学以前的一篇论文。
初始化了一个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->succ
是d2
。- 所以
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/