1.定义结构提的语法格式
struct 【结构名称】
{
成员变量定义
}【变量名列表】;
2.结构体数据类型名
struct 【结构名称】,【结构名称】如果缺省则无法使用结构类型名来定义变量。
3.定义结构变量
可以在定义结构体时直接定义变量,也可以使用结构数据类型名来定义变量。
struct date{int y,m,d;};
struct student
{
long num;
char sex;
char name[9];
int weight,age;
float height;
struct date birthday;
}a1,a2,*p,b[5];
struct student *q=b,y[4][5];
其中,a1、a2都是普通结构变量,p、q都是以结构体struct student为对象类型的指针变量,b[5]和y[4][5]都是以结构体struct student为元素类型的数组。
4.结构体变量的存储结构
c语言按照成员变量的定义顺序依次存储各成员变量,整个结构变量占用的存储空间为所有成员变量存储空间之和。
5.指向结构体的指针
结构体指针的对象为整个结构变量,结构体指针进行加减整数n的运算时,地址值实际加减n倍结构体类型存储长度。
可以用内存分配函数为结构体指针建立对象,比如:
struct student *p1;
p1=(struct student *)malloc(sizeof(struct student));
6.结构体变量的初始化
在定义结构变量时,可以对结构变量进行初始化。结构变量的初始化就是对各成员变量赋初值。
语法格式是:
struct [结构名称]{成员变量定义} 变量名={成员变量初值表};
其中,成员变量初值必须是常量表达式;初值的排列顺序就是成员变量的定义顺序;初值之间用逗号分隔.
如:struct {int x,y;}point={1,5};
struct student st[3]={
{20011001,'M',"ZhangJun",61,18,1.80f,{198,3,15}},
{20011002,'W',"WuLi",61,18,1.80f,{198,3,15}},
{20011003,'M',"zhangjun",61,18,1.80f,{198,3,15}}
} ;
7.访问结构体成员变量
方式一:用结构体变量名访问成员:结构体变量名.成员变量名
方式二:用指向结构体的指针访问成员:结构体指针->成员变量名
如:st[1].num=20011004; //将st[1]的学号改为20011004
st->height-=0.1; //st[0]的身高减小0.1米