结构体的定义到底是如何样的

结构体的定义到底是怎么样的?
typedef struct s
{
}T;

老师讲这种情况下,没有新的类型。

而我的理解是,S是一种新的类型,T可以指代struct s.请问这种理解正确么?

此外书上讲
struct s
{
}a,b,c;

这里的a,b,c是变量名,而在本文最上面的代码中,T却并不是一个变量名。请问如何理解?

------解决方案--------------------

#include <stdio.h>

typedef struct AA{
int val1;
}A;//A是变量类型,相当于int,double...

struct BB{
int val2;
}b;//b是变量,可以直接使用

int main()
{
A a;//由于A只是一个类型,所以必须先声明一个类型为A的变量a;等同于struct AA a;
a.val1=1;

b.val2=2;//b是变量,

return 0;
}


------解决方案--------------------
typedef struct s
{
}T;
// 等价于
struct s
{
};
typedef struct s T;

至于如何理解,如果你知道typedef是啥,那就没什么可理解的了。