构造类型:
1、结构型(struct)
A 、声明格式为:
struct 结构名 {
数据类型1 成员名1;
数据类型2 成员名2;
、、、、、
数据类型n 成员名n;
}a; 这个分号,是必须要的!!
" a " 为结构体变量名;
" { } "中的称为 " 成员变量 " ;
" struct 结构名 " 为结构体类型名;
结构体类型名 相当于 基本数据类型;
结构体变量名 相当于 基本数据变量。
B 、 访问结构体变量的成员
访问成员格式:结构体变量名.成员名 " . "是成员选择运算符!!
若要为字符串赋值汉字,可在结构体变量名后加“ = { } ”,花括号中间便可以赋值汉字,汉字由双引号括起来,值与值之间用“,”隔开。
eg:a={ " 张三 ",16 };
C 、内存
结构体变量所占内存长度一般等于各成员占的内存长度之和
eg:
#include <stdio.h> //共用体
struct people{
char name[20];
char gender[10];//性别
char address[100];//住址
int age;
float salary;//工资
}z={"朝曦","女","太阳系地球南端" };
int main(void){
z.gender[10];
z.address[100];
z.name[20];
z.age=20;
z.salary=200.56;
printf("姓名:%s\n",z.name);
printf("性别:%s\n",z.gender);
printf("年龄:%d岁\n",z.age);
printf("住址:%s\n",z.address);
printf("工资:%0.2f元",z.salary);
printf("\n\n");
return 0;
}
2、联合型(union)
A 、语法形式:
union 共用体名{
数据类型 成员名;
数据类型 成员名;
} 共用体变量名;
B、联合体又名“共用体”
共用体变量所占的内存长度等于最长的成员的长度;
C、特点:
同一内存段可以用来存放几种类型不同的成员,但是某一时刻只能存放其中一种。也就是,在某一瞬时只有一个成员起作用。
共用体变量中起作用的是左后一个存放的成员,在存放一个新成员后,原有的成员就失去了作用。
共用体变量地址和成员地址都是同一地址。
不同对共用体变量赋值,也不能在定义共用体变量时对其初始化。
3、枚举型(enum)
A 、语法形式:
enum 枚举名{
标识符 [ = 整型常数 ] ,
标识符 [ = 整型常数 ] ,
、、、、
标识符 [ = 整型常数 ] ,
};
C语言编译器将枚举元素当作是整型常量来处理,当遇到枚举元素列表时,编译器把其中第一个元素赋值为0,第二、第三、、、个依次赋值为1,2、、、。
如果枚举元素没有初始化,即省掉 ” =整型常数“ 时,则从第一个标识符开始,顺次赋给标识符0,1,2、、。当某成员赋值后,其后成员按依次加1的规则确定值。
B、注意:
枚举中每成员(标识符)结束符是 " , " ,不是 ";",最后一个成员可省略逗号。
初始化时可赋负数,以后的枚举元素依次加 1 。