回答如下:
关键字 typedef 是为一种数据类型起一个“别名”,所以定义结构体的时候不是一定要用 typedef 。一般用 typedef 给结构体类型起别名,主要是为了以后使用的时候少打一些字,看起来也会更简洁、明白。
命名的时候,上面是 E 和下面是 buf[1000] 在语法规则上没有任何关系,它们都是标识符,只要符合 C 语言的标识符的命名规范就可以了。
下面的 buf[1000] 是表示定义了一个名字叫 buf 的长度为 1000 个结构体 struct E 的数组。
如有帮助,烦请点采纳,谢谢!
E的意思是新设置一种数据类型,以后写E就好比写int一样定义变量类型
buf数组是结构E的数组变量
可以写成:
struct E{
char name[101];
int score;
}; //这样仅定义结构E
struct E buf[1000]; //定义结构数组,或者写:E buf[1000];是同样功能
没什么特别的,就是变量的命名规则呀,由字母数字下划线组成,数字不能开头,不能用系统保留字(关键字)
struct 自定义类型名(可以不定义)(相当于int a的int)
{
}自定义标签名;(相当于int a的a,就像int a=2等等)(或者不写定义,但省略不掉自定义类型,在后面定义时写struct 自定义类型 自定义标签;)
你说的是标准C语言的形式是:
typedef struct E{...}E;
E buf[1000];
到了C++,将类的概念扩展到了结构体,结构体升级成了一种比较特殊的类,具有了成员函数,而且成员的访问类型默认为public(公共成员),也就出现了以下形式:
struct E{...};
E buf[1000];
详细请参见C++ primer plus相关章节。