结构体与数组的区别:
1.数组:数组分量数目固定、类型相同、排列有序的一种构造类型。
2.结构体:分量数目固定、类型允许不同、排列有序的一种构造类型。
结构体可以容纳类型不同的数据是优于数组的特点,利用结构体的这一特点可以存储围绕同一个核心的不同类型的数据,例如:用一个结构体表示学生学号、姓名、成绩等信息。
(一)结构体类型定义
对于结构体一般定义在函数外。
第一种格式
struct 结构名
{
类型名1 成员名;
类型名2 成员名;
…
类型名n 成员名;
};(这个分号要是少了,你就完了)
struct Yang //我想干什么,你品
{
char name[10];
char sex[3];
int year;
int height;
int age;
};
第二种格式:使用关键字typedef声明定义一个结构类型别名。
typedef 类型 类型名
typedef struct 结构名
{
类型名1 成员名;
类型名2 成员名;
…
类型名n 成员名;
}类型别名;
上面那个栗子可以变身成这个样子
typedef struct Yang //我想干什么,你品
{
char name[10];
char sex[3];
int year;
int height;
int age;
}YANG; //多了一点东西
在“}”与“;”之间的为结构体的类型别名(比如说是人的小名。一般用结构名的全大写作为类型别名)
除了以上两种还可以这么干,第三种与第四种如下:
struct 结构名
{
类型名1 成员名;
类型名2 成员名;
…
类型名n 成员名;
}变量别名;
struct 结构名//可以缺点什么
{
类型名1 成员名;
类型名2 成员名;
…
类型名n 成员名;
}变量别名;
注意:结构名不是变量名,不分配空间,只是为结构类型变量名分配内存空间的一个样板(不太懂,作为一只菜狗不过多解释)
(二)结构变量定义和结构成员
结构变量定义和结构成员
一般格式:
struct 结构名 变量名表;
结构变量可以在定义时进行初始化,但在定义结构类型是时不能对结构成员进行初始化