C语言结构体
数据结构的定义经常用到
struct [标签名称] {
成员声明列表
}[变量名表列];
struct tag {
member-list
member-list
member-list
...
} variable-list ;
解释:
- 标识符 tag 是结构体标签。
- member-list 是标准的变量定义,比如 int i; 或者 float f,或者其他有效的变量定义。
- variable-list 结构变量,定义在结构的末尾,最后一个分号之前,您可以指定一个或多个结构变量。
- 在一般情况下,tag、member-list、variable-list 这 3 部分至少要出现 2 个。
- 结构类型的标签属于一个不同的命名空间:即使结构标签与变量名或函数名相同,编译器也仍然可以区分。类似地,对于每个结构类型,其中的每个结构成员名称都属于不同的命名空间。
情况1:
声明结构体变量a3
//此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
//同时又声明了结构体变量a3
//这个结构体并没有标明其标签
struct
{
int a;
char b;
double c;
} a3;
情况2:
结构体的标签被命名A3,但没有声明变量
用A3标签的结构体,另外声明变量
//此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
//结构体的标签被命名为SIMPLE,没有声明变量
struct A3
{
int a;
char b;
double c;
};
//用A3标签的结构体,另外声明了变量a1、a2、a3
struct A3 a1, a2[20], *a3;
情况3(数据结构考试常用):
用typedef创建新类型A3
用A3作为类型声明新的结构体变量
//也可以用typedef创建新类型
typedef struct
{
int a;
char b;
double c;
} A3;
//现在可以用A3作为类型声明新的结构体变量
A3 a1, a2[20], *a3;
结构体变量的初始化
#include <stdio.h>
struct Books
{
char title[50];
char author[50]