c语言结构体语法问题

typedef struct node
{
int data;
struct node *next;
}linknode;
typedef linknode *linklist;

这是一个单链表的结构体定义,其中两个问题不是很清楚.
首先,在结构体中的结构体struct node *next;为什么可以不打括号?
还有类型定义typedef linknode *linklist;中*linklist应该是指向结构体linknode的指针?但是从类型定义来讲不应该是这样的吧?

你对指针不太了解吧
我说说我的理解
首先是typedef的使用:
举例
typedef int ABC;
那么 int a=3和 ABC a=3;就完全一样了
也就是说 给int取了个小名叫ABC,
同理,在
typedef struct node
{
int data;
struct node *next;
}linknode;
typedef linknode *linklist;
中,比如你想定义一个结构体变量你可以用以下2种方式
1 struct node aaaa;
2 linknode aaaa;
效果完全一样。
而没有typedef的结构体:
struct node
{
int data;
struct node *next;
}linknode;
那么这里的linknode 就相当于int a 中的a,而不
是 int ,
不知道你理解我所说的关于是否存在typedef
的差别没有
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-10-24
1.struct node *next;是定义结构体指针*next.为什么加括号?
2.*linklist是指向linknode的指针,不是类型定义.这里面只有node是类型定义,其他都是变量的声明.linknode只是一个结构体变量.
相似回答