一个小问题,数据结构(C语言版)

来源:百度知道 编辑:UC知道 时间:2024/06/26 02:06:50
typedef struct LNode {
ElemType data;
struct LNode *next;
}*Link,*Position;

typedef struct {
Link head,tail;
int len;
}LinkList;

结构体后面加*Link和*Position是声明对象么?
还是typedef声明一个别名?

LinkList是没加*有什么不一样?
Link为什么可以作为 head,tail的类型名?
我写程序用的是C++,没学过C语言。
struct LNode 不是直接用LNode么?
可以直接用Link->data么?如果Link不是指针型,用Link.data是不是也行??还是要再另外声明变量?

它们只能用于定义变量,不能像类那样引用!

************************************************

typedef用于创建自定义类型,例如在这里:

typedef struct LNode {
ElemType data;
struct LNode *next;
}*Link,*Position;

就是定义了两个自定义指针类型Link和Position,它们可以用于定义变量,而且和struct LNode *是"同义词"

typedef struct {
Link head,tail;
int len;
}LinkList;
就是定义一个自定义类型LinkList,它和
struct {
Link head,tail;
int len;
}
是同义词,可以用来定义这个结构体类型的变量。

前面是 typedef的都是声明类型名
没*就是说就是这个类型, 有*就是声明的这个类型的指针类型

因为typedef声明的就是类型名,类型名当然可以用来声明成员

首先c语言中没有对象。对象是面向对象的语言中才有的……
typedef是给结构体LNode重新命名。
LinkList是结构体变量,* LinkList是指针变量。