【发布时间】:2017-12-29 10:24:58
【问题描述】:
#include<stdio.h>
#include<stdlib.h>
struct s
{
int i ;
struct s *p ;
} ;
int main( )
{
struct s var1, var2 ;
var1.i = 100 ;
var2.i = 200 ;
var1.p = &var2 ;
var2.p = &var1 ;
printf ( "\n%d %d", var1.p -> i, var2.p -> i ) ;
return 0;
}
我需要对这条线有所了解:
printf ( "\n%d %d", var1.p -> i, var2.p -> i ) ;
为什么要用箭头操作符,为什么箭头操作符后面只有i而不是这样:
printf ( "\n%d %d", var1.p -> var2.i, var2.p -> var1.i ) ;
【问题讨论】:
-
谢谢 pac,我想知道如何修复 synatx
-
感觉这里少了点什么:
struct *p; -
是的,我错过了结构名称,我的错
-
恭喜,你已经创建了你的第一个循环链表。
-
@CostantinoGrana 哦,是的,区别在于 循环 列表允许您从列表中的任何位置迭代到列表中的头或尾节点的任何位置(如它们被视为与任何其他节点一样)。在传统的头/尾列表中,如果您位于节点 35 上,则只能从该节点迭代到列表的开头或结尾——但不能跨越。
标签: c pointers structure dereference