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

复杂的数据类型04--对象的基础:结构

(1)概念:结构是一种由程序员定义的、由其他变量类型组合而成的数据类型。
(2)结构的节本语法格式:
struct name
{
    type varName1;
    type varName2;
    ......

}; //注意有一个分号

注意:结构所能包含的变量个数是无限制的,变量可以是任意一种合法的数据类型,这些变量称为该结构的成员 。

(3)使用场景:需要处理一些具有多种属性的数据时,结构往往是最好的选择。

比如:编写个人档案,涉及到的基本特征有姓名、性别、年龄...等。

//定义一个Person类型的结构
struct Person 
{
    std::string name;
    char sex; //F==Female,M==Male
    int age;
};
(4)创建结构类型的变量

定义结构后,可以创建该结构类型的变量

Person Xiaohong; //创建一个Person结构类型Xianghong
(5)用“.”对结构成员进行赋值
Xiaohong.name="小红";
Xiaohong.sex='M';
Xiaohong.age=18;

如果在创建一个结构类型变量的时候已经知道它各个成员相关的值,我们可以在声明变量的同时进行赋值。

Person Xiaohong={"小红",'M',18};
(6)结构与指针

1)指针可以指向结构,就像指向其他任何变量那样。

2)如何通过指针访问各个成员的值?

        <1>创建一个指向该结构的指针:

Person *pXiaohong=&Xiaoghong; //创建Person类型的指针 

注意:因为指针的类型必须与指向的地址的变量的类型一致,所以之pXiaohong指针的类型也是Person(Xiohong的类型是Person,所以pXiaohong指针的类型也是Person).

        <2>通过对指针解引用来访问相应的变量值:

	
	//修改Person类型结构的成员值 方式一: 
	(*pXiaohong).name="小a红";
	(*pXiaohong).sex='F';
	(*pXiaohong).age=20;
	
	std::cout<< (*pXiaohong).name<<"\n";	//小a红
	std::cout<< (*pXiaohong).sex<<"\n";		//F
	std::cout<< (*pXiaohong).age<<"\n";		//20

        <3>通过"->"方式访问相应的变量值:

	//修改Person类型结构的成员值 方式二:
	 pXiaohong->name="小明";	  
	 pXiaohong->sex='F';	  
	 pXiaohong->age=23;	  
	 
	 std::cout<<pXiaohong->name<<'\n';  //小明
	 std::cout<<pXiaohong->sex<<'\n';	//F
	 std::cout<<pXiaohong->age<<'\n';	//23
(7)完整代码
#include <iostream>

int main()
{
	
	//定义一个Person类型的结构
	struct Person 
	{
  	  std::string name;
  	  char sex; //F==Female,M==Male
  	  int age;
	};
	
	Person Xiaohong; //创建一个Person结构类型Xianghong
	
	Xiaohong.name="小红";
	Xiaohong.sex='M';
	Xiaohong.age=18;
	
	Person *pXiaohong=&Xiaohong; //创建Person类型的指针 
	
	//修改Person类型结构的成员值 方式一: 
//	(*pXiaohong).name="小a红";
//	(*pXiaohong).sex='F';
//	(*pXiaohong).age=20;
//	
//	std::cout<< (*pXiaohong).name<<"\n";	//小a红
//	std::cout<< (*pXiaohong).sex<<"\n";		//F
//	std::cout<< (*pXiaohong).age<<"\n";		//20

	//修改Person类型结构的成员值 方式二:
	 pXiaohong->name="小明";	  
	 pXiaohong->sex='F';	  
	 pXiaohong->age=23;	  
	 
	 std::cout<<pXiaohong->name<<'\n';  //小明
	 std::cout<<pXiaohong->sex<<'\n';	//F
	 std::cout<<pXiaohong->age<<'\n';	//23
	  


	
	return 0;
}
(8)课后练习

• 【要求】
        – 定义一个结构,至少存储:姓名、身份证、性别
        – 实现文件存储
        – 可以打印到屏幕


未完待续。。。 

相关文章:

  • Linux_3.2
  • 力扣刷题————199.二叉树的右视图
  • 【深度学习】处理crowdhuman数据集
  • Turtle综合案例实战(绘制复杂图形、小游戏)
  • CSS3:Flex简记
  • RCU机制以及内存优化屏障
  • VAE 详解
  • 讲述我的plc自学之路(第一章 风起)
  • FPGA FLASH烧写遇到的问题
  • 打车小程序司机接单系统落地实现
  • Spark 2.0携手Solcore:AI重构去中心化质押算力生态 !
  • OpenGL中EBO的使用及原理
  • FPGA分秒计数器——Verilog语言+DE2-115开发板
  • STM32_HAL之程序编写、编译、烧写、上板测试初体验
  • 采用前端技术开源了一个数据结构算法的可视化工具
  • Glide生命周期管理原理 学习与总结
  • 嵌入式单片机ADC数模转换的基本方法
  • 云手机如何防止设备指纹被篡改
  • 速查Linux常用指令
  • Python基于Django的电影个性化推荐系统【附源码、参考文档】
  • 手机微网站建设案例及报告/郑州网络推广专业公司
  • 动态网站开发 PHP/杭州网站建设方案优化
  • 电商网站用php做的吗/青岛网站建设制作推广
  • 海口做网站公司那家好/荆州seo推广
  • 做公众号首图的设计网站/seo去哪学
  • 网站留言发送到邮箱/百度站长之家