结构体定义
(1)先声明结构体类型再定义变量名
如上面已定义了一个结构体类型 struct student,可以用它来定义变量。如:
struct student //结构体类型名
student1, student2//结构体变量名
定义了 student1, student2 为 struct student 类型的变量。
在定义了结构体变量后,系统会为之分配内存单元。例如 student1 和 student2在内存中各占59个字节。
应当注意,将一个变量定义为标准类型(基本数据类型)与定义为结构体类型不同之处在于后者不仅要求指定变量为结构体类型,而且要求指定为某一特定的结构体类型(例如 struct student 类型),因为可以定义出许多种具体的结构体类型。而在定义变量为整形时,只需指定为 int 型即可。
(2)在声明类型的同时定义变量
例如:
struct student
{
char name[20];
int age;
}student1, student2;
它的作用与第一种方法相同,即定义了两个 struct student 类型的变量 student1, student2 这种形式的定义的一般形式为
struct 结构体名
{
成员表列
}变量名表列;
(3)直接定义结构类型变量
其一般形式为
struct
{
成员表列
}变量名表列;
即不出现结构体名。
结构体变量的初始化
struct student{
char name[20];
int age;
};
第一种:struct student stu;
stu.name=”张三”;
stu.age=20;
第二种:struct student stu={“张三”,20};
第三种:struct student stu={.age=20,.name=”张三”};
结构体数组
定义结构体数组
struct student
{
char name[20];
int age;
};
struct student stu[3];
以上定义了一个数组 stu,其元素为 struct student 类型数据,数组有 3 个元素。也可以直接定义一个结构体数组。如:
struct student
{
int num;
....
}stu[3];
或
struct
{
int num;
...
}stu[3];
结构体数组的初始化
与其它类型数组一样,对结构体数组可以初始化如:
struct student
{
char name[20];
int age;
}stu[3] = {{"Li Lin", 18},
{"Li Lin",18},
{"Li Lin",18}};