结构由固定的成员构成,每一个结构变量在内存中占有一片连续的内存空间。
定义结构
- struct是关键字,紧接着的类型标识符是自定义,花括号外面是分号,里面是不同类型的成员定义,指针,整型,字符型等等都可以。
- 说明变量有三种方式:
在第二个花括号之后在分号之前,不用再带类型标识符定义,直接写变量名即可;
在分号之外说明变量,记得加上类型标识符;
struct之后也可以不加类型标识符,就那样空着,但是这样会造成之后在分号之外无法再说明新变量。 - 注:可以在一个结构变量的定义中调用其他不同类型的结构变量,但是不可调用本类型的结构变量中的(非指针类型的)成员(会导致无限递归),如果是指针类型,可以调用,与后面的链表有关。
访问结构
数据成员必须在结构变量说明之后才有存储意义,因此数据成员不可脱离结构变量而单独存在和使用。
- 圆点运算符访问:today.wind
- 指针访问结构:(*p).name 或者p->name
- 相互赋值的仅限于相同类型的结构变量之间才可以这样操作。
结构参数
和基本类型变量一样,当结构类型变量作为函数参数的时候,可以作为传值参数,指针参数和引用参数,具体方法相同。
结构数组
- 定义:和上文相同,只是由a变成了a[10]。
- 访问:a[i].name
- 结构数组的元素类型是结构类型
- 排序的时候使用索引数组进行排序,可以大大减小工作量,直接一次性赋值,一次性交换整个结构中的所有成员,而不用像冒泡排序那样,每次交换数据都要一个成员一个成员的交换。