8 C语言结构体

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;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值