结构体
结构体的出现是为了简化用户处理不同的数据类型。一个对象可能有多个属性,为了解决每次定义一个新的对象就要重新定义多个数据类型,结构体就应用而生。
结构体是将不同类型的数据按照一定的功能需求进行整体封装,封装的数据类型与大小均可以由用户指定。
用户可以对结构体进行自定义,并且允许存储不同的数据类型。
声明结构体类型:
struct 结构体名{
成员列表
};
注意最后一定要分号';'号结尾
例:
struct STUDENT{//结构体名全大写表示属规范
int age;
char name[10];
char sex[5];
float score[10];
};
1、struct是定义结构体的关键字
2、struct STUDENT 是用户自定义的结构体数据类型,它的作用和int、char 一样用来定义变量名。
正如上面所说,声明结构体只是定义了数据类型,像int一样系统不会对其分配内存,只有定义变量的时候才会分配内存。
定义结构体变量:
定义结构体变量有两种方法:
一:struct STUDENT stu1,stu2;
二:在声明结构体的时候,在最后结尾的分号前定义
例:
struct STUDENT{//结构体名全大写表示属规范
int age;
char name[10];
char sex[5];
float score[10];
}stu1,stu2;
“结构体类型”的声明和使用与函数的定义和使用有所不同,函数的定义可以放在调用处的后面,只需在前面声明一下即可。但是“结构体类型”的声明必须放在“使用结构体类型定义结构体变量”的前面。
为了适应大规模的程序修改和使用,为了方便用户处理,会将结构体类型的声明集中放在'.h'为后缀的头文件中,在源文件使用到某结构体类型的时候,用#include命令将该头文件包含在该文件中就行。
结构体运算
在两个结构体类型完全一样的前提下,也只能对结构体进行赋值。
结构体变量的引用
因为结构体变量中含有多种数据类型的特殊性,所以结构体变量不可以整体进行引用。只可以使用成员访问运算符' . '进行 单个的引用。
例:
stu1.age=20;
结构体变量的初始化
一;可以在定义结构体变量的时候行初始化
#include <stdio.h>
struct BTD
{
int year;
int mouth;
int day;
};
struct STUDENT
{
int age;
char name[10];
float score;
struct BTD birthday;
};
void main()
{
struct STUDENT stu1 = {12,"熊大",80.5,{1995,12,6}};
}
这种情况初始化的时候对每一个结构体类型都要使用"{}"括起来,各结构体成员之间要使用逗号隔开。对于字符和字符串这些常规 数据类型按照其原来的初始化规范使用单引号和双引号括起来。
二:可以在结构体变量定义之后对成员变量挨个赋值
#include <stdio.h>
struct BTD
{
int year;
int mouth;
int day;
};
struct STUDENT
{
int age;
char name[10];
float score;
struct BTD birthday;
};
void main()
{
struct STUDENT stu1 ;
stu1,age = 20;
stu1,name = "熊大";
stu1.score = 80.5;
stu1.birthday.year = 1995;
stu1.birthday.mouth = 12;
stu1.birthday.day = 6;
}
这样初始化赋值的话产生的代码量会比较大。