C语言结构体别名定义问题

typedef struct STU
{
int age;
struct STU *next;
}*linklist;
linklist head;
中为什么可以将结构体别名定义为带指针的*inklist?而后面定义的head又是什么类型?
哪位C大神帮我解析下

C语言给结构体定义别名用typedef关键字操作,就两种情况:

    给结构体起一个别名,如:

    typedef struct ABC{
    ...

    }S;——这就为结构体ABC定义了一个别名S。以后写S x;就等价于写struct ABC x;了。

    给结构体指针起一个别名,如:

    typedef struct ABC{

    ...

    }*PS;——这就为结构体指针ABC *定义了一个别名PS。以后写PS pt;就等价于写struct ABC *pt;了。注意这里是用typedef给struct ABC{...} *起一个别名PS,而不是给struct ABC{...}起一个别名*PS——后者是说不通的,起码的错误是标识符不可能以*开头!

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-24
定义一个结构体,比如说就你这个
struct STU
{
int age;
struct STU *next;
};
然后我想定义一个结果提类型的指针,应该是struct STU *p;或者定义一个普通的结构体变量struct STU a;
比较麻烦,用typedef后
typedef struct STU
{
int age;
struct STU *next;
}linklist;
那么现在linklist就代表这个结构体,现在定义结果提指针linklist *p;就方便了
同样,把他定义成
typedef struct STU
{
int age;
struct STU *next;
}*linklist;
那么linklist就是代表这个结构体指针类型,linklist head;head就是结构体指针类型了;
第2个回答  推荐于2017-09-20
typedef struct STU
{
int age;
struct STU *next;
}*linklist;
此处第一了一个型的类型,即struct STU *,即指向结构体STU的指针
所以head的类型也就是struct STU *本回答被提问者采纳
第3个回答  2015-10-26
head为一个指向STU结构体类型的指针。但是并没有未其分配具体的空间。可以将一个已定义为STU结构体的指针赋给它。
第4个回答  2013-11-24
这表示 linklist 是 struct STU 的指针类型,
后面定义的 head 是 linklist 类型的,也就是指向 struct STU 的指针。
相似回答