C 数组容许定义可存储相同类型数据项的变量,结构是 C 编程中另外一种用户自定义的可用的数据类型,它容许您存储不一样类型的数据项。编程
结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能须要跟踪每本书的下列属性:数组
定义结构
为了定义结构,您必须使用 struct 语句。struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式以下:数据结构
struct tag {
member-list
member-list
member-list
...
} variable-list ;spa
tag 是结构体标签。指针
member-list 是标准的变量定义,好比 int i; 或者 float f,或者其余有效的变量定义。编译器
variable-list 结构变量,定义在结构的末尾,最后一个分号以前,您能够指定一个或多个结构变量。下面是声明 Book 结构的方式:it
struct Books { char title[50];编译
char author[50];变量
char subject[100];数据类型
int book_id;
} book;
在通常状况下,tag、member-list、variable-list 这 3 部分至少要出现 2 个。如下为实例:
//此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
//同时又声明告终构体变量s1
//这个结构体并无标明其标签
struct
{
int a;
char b;
double c;
} s1;
//此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
//结构体的标签被命名为SIMPLE,没有声明变量
struct SIMPLE
{
int a;
char b;
double c;
};
//用SIMPLE标签的结构体,另外声明了变量t一、t二、t3
struct SIMPLE t1, t2[20], *t3;
//也能够用typedef建立新类型
typedef struct
{
int a;
char b;
double c;
} Simple2;
//如今能够用Simple2做为类型声明新的结构体变量
Simple2 u1, u2[20], *u3;
在通常状况下,tag、member-list、variable-list 这 3 部分至少要出现 2 个。如下为实例:
//此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
//同时又声明告终构体变量s1
//这个结构体并无标明其标签
struct
{
int a;
char b;
double c;
} s1;
//此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
//结构体的标签被命名为SIMPLE,没有声明变量
struct SIMPLE
{
int a;
char b;
double c;
};
//用SIMPLE标签的结构体,另外声明了变量t一、t二、t3
struct SIMPLE t1, t2[20], *t3;
//也能够用typedef建立新类型
typedef struct
{
int a;
char b;
double c;
} Simple2;
//如今能够用Simple2做为类型声明新的结构体变量
Simple2 u1, u2[20], *u3;
,第一个和第二声明被编译器看成两个彻底不一样的类型,即便他们的成员列表是同样的,若是令 t3=&s1,则是非法的。
结构体的成员能够包含其余结构体,也能够包含指向本身结构体类型的指针,而一般这种指针的应用是为了实现一些更高级的数据结构如链表和树等。