结构体的定义和基本使用
C++中的类型有int double char等,定义一种结构就相当于定义一种类型,可以在定义所定义类型的变量。
一定义结构体
下面我将由一个例题来引出结构体的定义
(为方便表达将工人薪水简化为整数)
struct employee
{char name[12];
int year;
int phone;
int salary;
};
(struct是关键字,employee是新类型的名称,
name、 year、phone、salary是一系列的变量)
定义的该种类型的成员应该包含了工人的姓名、年龄、电话、工资,即每一个新定义的成员的内容都是姓名、年龄、电话、工资。因此结构是由不同数据类型的数据组成的集合体。
由这个例题可以看出用结构表达方式简单明了的多,这也是结构的优点。
*应当注意的是
1.结构体的定义放在主函数之前
2.结构定义的时候不能实现无穷的递归*
例如
struct person
{char name[10];
double salary;
int year;
person son;
}
二初始化结构体
初始化结构体可分为两类:定义时初始化,在主函数中初始化。
(1)定义时初始化
struct empioyee
{char name[12];
int year;
int phone;
int salary;
}woork{"zhangsan",35,123456,6000,"lisi",37,123457,7500,"wangwu",39,123458,6900}
(2)在主函数中初始化
在此之前先了解访问结构变量成员的方法有两种,即
work.name
work->name
#include <iostream>
#include <cstring>
using namespace std;
struct empioyee
{char name[12];
int year;
int phone;
int salary;
};
int main()
{
employee work1,work2,work3;
strcpy(work1.name,"zhangsan");
work1.year=35;
//诸如此类初始化结构体
//注意字符串的不能用赋值而应用strcpy函数
在初始化结构时数据的输入
(1.)cin>>输入
struct empioyee
{char name[12];
int year;
int phone;
int salary;
};
int main()
{employee work;
for(int i=0,i<10;i++)
cin>>work.name[i];
cin>>work.year;
cin>>work.phone;
(2.)类型相同的结构变量可以整体赋值
struct weather
{{ double temp; double wind; } yesterday ;
int main ( )
{ weather today ;
yesterday . temp = 10.5 ;
yesterday . wind = 3.1 ;
today = yesterday ;//将昨天的温度和风力分别对应赋给了今天。
注意使用整体赋值时应注意仅限于类型相同的不同变量之间
接下来是一个反例
struct weather1
{ double temp; double wind; } yesterday ;
struct weather2
{ double temp; double wind; } today ;
int main()
{yesterday.temp=22.1;
yesterday.wind=3.6;
today=yesterday;
today和yesterday虽然包含的内容一样,但是todday和yesterday属于不同类型的变量不能用整体赋值。
最后应注意在定义结构体时不同类型之间是用“;”隔开,在初始化结构体是是用“,”隔开。