结构体

结构体,
允许用户根据具体问题利用已有的基本数据类型来构造自己所需的数据类型,

1,结构体类型定义,
一般形式,
struct 结构体类型名
{
数据类型 成员1的名字
………………
};

结构体变量的定义,
有三种方式,
1,先定义一个结构类型,再定义这种结构类型的变量,

struct a{
int num;//学号
char name[10];//姓名
int math, english,computer;//课程成绩
double average;//个人平均成绩
};//记得这里有分号
struct a s1,s2;

2,在定义结构类型的同时定义结构变量,

struct a{
int num;//学号
char name[10];//姓名
int math, english,computer;//课程成绩
double average;//个人平均成绩
}s1,s2;//记得这里有分号

3,结构类型和结构变量同时定义时,还可以省略结构类型名,

struct {
int num;//学号
char name[10];//姓名
int math, english,computer;//课程成绩
double average;//个人平均成绩
}s1,s2;//记得这里有分号

注意,由于3没有给结构体类型命名,那么之后不能再在程序的其他地方用这个结构体类型定义新的结构体变量,所以,这种方法不常用,
需要用结构体类型名定义结构体变量的方法是struct a s1,s2;这样,

3,结构体变量的引用,
用结构体成员运算符“.”(也称圆点运算符)来引用结构成员,
格式为,结构变量名 . 结构成员名
例如,

s1.num=1001;//s1变量的学号赋值为1001
strcpy(s1.name,"jiang");//s1变量的姓名赋值为jiang字符串,

注意,由于结构成员name是一个字符数组,因此必须用strcpy()来进行赋值,而不能使用=进行赋值,否则会出错,

4,结构体变量初始化,
按照结构体成员的顺序把结构体成员的初值放在一对花括号中,例如,
struct a s1={1001,“jiang”,32,67,98};

5,结构体变量整体赋值,
一对一赋值,同初始化类似,

结构体数组,
本质也是数组,只不过是每一个数据都是结构类型的变量。定义的形式为
struct a as[100];
结构体数组初始化,可以在定义结构体数组的同时对其进行初始化,初始化的时候将每个元素中成员的初值放在一对花括号中,例如,
struct a as[100]={
{1001,“jiang”,32,67,98},{001,“jiang”,3,7,8}
};剩下的系统自动赋值为0

结构体数组使用,
结构体数组的一个元素相当于一个结构体变量,使用方法同结构变量,例如,
as[i]=as[k];
把数组元素as[i]整体赋值给as[k];
而引用结构体元素的某个成员,其格式为,
结构数组名[下标] . 结构成员名
例如,as[i].num=1001;
strcpy(as[i].name,“jiang”);

结构体指针,
先定义一个结构类型,
然后定义结构体指针,
结构体指针的一般定义形式为,
struct 结构体类型名 *p;
例如,struct a p;
结构体指针赋值,
结构体指针定义后必须先赋值才能使用,也就是要把结构体变量或者结构体数组名赋值给结构体指针,(就是相当于要先指向一个结构体才可以使用),
有结构体变量s1定义如下,
struct a s1={1001,“jiang”,32,67,98};
那么赋值语句为p=&s1;
建立结构体指针访问结构体变量成员的方法有以下两种,
1,用
p先访问结构体变量,再进而访问结构体成员,例如,(p).num;//此时p等价于s1 ,所以(*p).num等价于s1.num,值为1001,
2,用指向运算符“->”访问指针指向的结构成员,例如,
p->num;//这是结构体指针访问结构体成员的特定用法,p->num等价于(*p).num也等价于s1.num,值为1001,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值