8 结构体
8.1 什么是结构体
用一组变量描述同一个事物。构造一个新的数据类型——结构体。属于组合数据类型,一组变量捆绑在一起,形成结构体。
8.2 定义结构体变量
(1)直接用已声明的结构体类型定义变量名student student1 student2
,结构体类型名 结构体变量名
(2)在声明类型的同时定义变量
struct student
{
int id;
char name[20];
char sex;
int age;
float score;
char addr[30];
}xiaoming_1,xiaoming_2;//注意最后的";"
8.3 结构体变量的使用
#include<iostream>;
using namespace std;
struct student
{
int id_num;
char name[10];
};//注意这个';'
int main()
{
student mike = {123,{'m','i','k','e','\0'}};//结构体的初始化类似数组。存储方式也类似数组。
mike.id_num = 20130000 + mike.id_num;
for(int i = 0; mike.name[i] != '\0';i++)
mike.name[i] = toupper(mike.name[i]);//小写变大写
cout << mike.id_num << ' ' << mike.name << endl;
return 0;
}
8.4 结构体变量赋值
结构体赋值相当于Copy
了一份给对方。
#include<iostream>;
using namespace std;
struct student
{
int id_num;
char name[10];
};//注意这个';'
int main()
{
student mike1 = {123,{'m','i','k','e','\0'}};
student mike2;
mike2 = mike1;
mike2.id_num = 20130000 + mike2.id_num;
for(int i = 0; mike2.name[i] != '\0';i++)
mike2.name[i] = toupper(mike2.name[i]);
cout << mike1.id_num << ' ' << mike1.name << endl;
cout << mike2.id_num << ' ' << mike2.name << endl;
return 0;
}
8.5 结构体变量做函数参数
结构体做参数相当于Copy
一份跟函数。与数组名作函数参数完全不一样,数组名相当于地址给了函数。
#include<iostream>;
using namespace std;
struct student
{
int id_num;
char name[10];
};//注意这个';'
void renew(student one)
{
one.id_num = 20130000 + one.id_num;
for(int i = 0; one.name[i] != '\0';i++)
one.name[i] = toupper(one.name[i]);
cout << one.id_num << ' ' << one.name << endl;
}
int main()
{
student mike = {123,{'m','i','k','e','\0'}};
renew(mike);
cout << mike.id_num << ' ' << mike.name << endl;
return 0;
}
8.6 结构体作函数返回值
结构体做返回值相当于Copy
一份给调用者。
#include<iostream>;
using namespace std;
struct student
{
int id_num;
char name[10];
};
student newone()
{
student one = {20130123,{'m','i','k','e','\0'}};
return one;
}
int main()
{
student mike = newone();//把one复制一份给mike。
cout << mike.id_num << ' ' << mike.name << endl;
return 0;
}