结构的本质是C语言的一种数据抽象,通俗的说,是基本数据类型的重组。为什么要重组呢?因为基本数据类型不够用了。为什么不够用了呢?因为需要的信息类型太多了。这是一个很大的话题。信息本来是没有什么类型之分的,但是为了便于在计算机内部的管理,人们在C语言中把信息先分成了基本的几个类型,比如整型、浮点型、字符型、布尔型等等。但是呢,描述一个事物的全部信息有时候仅用一种基本类型是不够的,比如一本书的基本属性:作者(字符型)、价格(浮点型)、出版日期(我也不知道什么型)、书名(字符型)。然而操蛋的是,我们要处理的并非是这本书的某个属性,而是整体,这时候我们只好把各种类型组合起来构造一种全新的数据类型——这正是发挥我们想象力和创造力的时候。除了基本类型以外并由其组合而成的新类型统称为结构体。
首先是关键字struct,表明这不是一个基本类型;然后是一个标记(tag),相当于给新类型起的名字,但是这个名字并非必须的,下面会谈到为什么写上比较好;最后是新类型的成员,需要放在花括号里面且表明基本数据类型。需要注意的是,末尾需要加上分号,因为这只是类型定义,属于一种声明,声明都要以分号结尾。类型定义并不分配内存空间,他只是创造了一个模版,以后用这个模版定义变量的时候才真正的分配内存。
};
初始化的时候,若结构体变量是全局变量,则必须使用常量表达式初始化成员;若结构体是局部变量,则可以是变量表达式初始化成员。
原文地址:http://blog.csdn.net/u012668018/article/details/25164063