C语言结构体 别名定义

以前一直有这么个误区。现在解决了。


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

1、

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

typedef struct ABC{
...

}S;

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


2、

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

typedef struct ABC{

...

}* PS;

这就为结构体指针ABC * 定义了一个别名PS。以后写PS pt ; 就等价于写struct ABC *pt 。

注意!!这里是用typedef给struct ABC{...} *起一个别名PS,而不是给struct ABC{...}起一个别名*PS

后者是说不通的,起码的错误是标识符不可能以*开头!