当前位置: 首页 > news >正文

C++ struct 结构体类型

        在处理大批量数据时,一般会使用数组来实现,数组中各元素都属于同一数据类型。但在实际问题中,要处理的一组数据往往具有不同的数据类型。如一个学生的个人信息有学号(num)、姓名(name)、性别(sex)、年龄(age)、家庭住址(address)等,如下表所示。这些个人信息中包含了不同的数据类型,而这些不同的数据类型又是相互联系的,他们都是这个学生的属性。

numnamesexageaddres
20200020老王M12Chongqing

        那么,该如何把这些不同类型、不同含义的数据当作一个整体来处理呢?

        为了解决这个问题,C++提供了一种用户自定义的数据类型——结构体。

        C++中的结构体是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。

        1 函数体变量的定义

        1 在定义结构体类型时,同时定义结构体变量

struct 结构体类型名
{成员列表;成员函数;
}结构体变量列表;
          说明

        1 struct时结构体类型的关键字。

        2 成员列表可以有多个成员。

        3 成员函数可以有多个,也可以没有。

        4 结构体变量列表可以是一个变量,也可以是多个变量,如果是多个变量,变量名之间用逗号隔开。

        例如:

struct student//定义结构体类型student
{int num;char name[20];char sex;int age;char address[100];
}s1,s2;  //定义两个结构体类型student的s1,s2

2 先定义结构体,在定义结构体变量。

struct 结构体类型名
{成员列表;成员函数;
};
结构体名 结构体变量列表;

例如:

struct student//定义结构体变量student
{int num;char name[20];char sex;int age;char address[100];
};
student s1,s2;//定义两个结构体类型student的变量s1,s2

        在定义结构体变量时需注意,结构体变量名和结构体名不能相同。在定义结构体时,系统对其不分配实际内存,只有定义结构体变量是,系统才为其分配内存。

2 结构体变量的引用

定义结构体变量后,就可以引用或访问这个变量的成员了。

引用变成员的一般格式如下:

结构体变量名.成员名

其中,“."是成员符,它在所有的运算符中优先级最高,因此可以将其当成一个整体来看,即当成一个变量。与其他变量的操作相似。

例如:

s1.num=20200020    //将20200020赋值给结构体变量s1中的成员num
cin>>s1.num;    //键盘读入数据
3 结构体变量的初始化

结构体类型与其他数据类型一样,也可以在定义结构体变量时赋初值。

例如:

struct student
{int num;char name[20];char sex;int age;char address[100];
}s1={20200020,"张三",'M',12,"Nanjing"};

或者在主函数中初始化:

student s1={20200020,"张三",'M',12,"Chongqing"};

 Ladies and gentlemen,赶紧用你发财的小手点个赞吧!

http://www.lryc.cn/news/316709.html

相关文章:

  • 什么是VR虚拟现实体验店|VR主题馆加盟|元宇宙文化旅游
  • 【智能家居入门1之环境信息监测】(STM32、ONENET云平台、微信小程序、HTTP协议)
  • AIGC安全研究简述(附资料下载)
  • 初识Spring MVC
  • 云原生之容器编排实践-ruoyi-cloud项目部署到K8S:Nginx1.25.3
  • PHP立体安全攻击向量:保护应用程序的关键挑战
  • 【功能大全】手机短信验证码一键注册登录流程
  • 【Python】【Matplotlib】深入解析plt.grid()---原理、应用与注意事项
  • 数据库规范化设计案例解析
  • 服务器段的连接端口和监听端口编程实现
  • 用“定时执行专家”武装你的电脑,做时间管理大师!
  • css3实现3D立方体旋转特效源码
  • 计算器系统基础知识-校验码
  • springboot换日志框架后爆SLF4J: Class path contains multiple SLF4J bindings的解决办法
  • k8s+zabbix
  • k8s-生产级的k8s高可用(2) 25
  • ubuntu20.04 创建ros环境、创建rospackage
  • QT进阶---------pro项目文件中的常用命令 (第三天)
  • php常用设计模式应用场景及示例
  • 浏览器与服务器通信过程(HTTP协议)
  • Pytorch搭建AlexNet 预测实现
  • 笔记:使用parfile进行的数据导入导出
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的行人跌倒检测系统(深度学习+UI界面+完整训练数据集)
  • Ubuntu 14.04:PaddleOCR基于PaddleServing的在线服务化部署(失败)
  • Java JUC 笔记(2)
  • webpack5高级--02_提升打包构建速度
  • MAC M芯片 Anaconda安装
  • 【JS】自动下拉网页刷新,当出现指定关键字,就打印出来
  • 中兴通讯联手新疆移动,开通全疆首个乡农场景700M+900M双频双模基站
  • 爬虫案例4: parsel 模块的运用