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

联合、枚举、类型别名

数据类型:

  • 已学--整数、实数、字符、字符串、数组、指针、结构
  • 待学--向量(vector)类型:优于数组
  • 非主流的类型--联合(union)、枚举(enum)

一、联合

  • 联合类似于结构,可以容纳多种不同类型的值。
  • 区别:联合每次只能存储这些值中的某一个。
  • 例如:我们要定义一个变量来存放某种密码,我们可以选择是你女朋友的生日、身份证最后4位数字或者你养的宠物的名字等等。使用联合类型是一个不错的选择。

1.联合的基本语法格式

	union mima //使用union关键字 
	{
		unsigned long birthday;//使用生日作为密码 
		unsigned short ssn;// 使用身份证后四位作为密码 
		char *pet;//使用宠物名字作为密码 	
	};  //一定要加分号; 

2.创建union类型的变量 

	mima pwd; //创建一个mima联合类型的变量pwd 

3.对成员进行赋值

	//对成员进行赋值
	pwd.birthday=200000616;//将 200000616 存入 联合的birthday成员里 
	pwd.ssn=0226;//将 0226 存入 联合的ssn成员里 , 并丢弃(覆盖) birthday成员里的值 
	pwd.pet="Lili";//将 Lili 存入 联合的pet成员里 ,并丢弃(覆盖) ssn成员里的值  

#include <iostream>

int main()
{
	union mima //使用union关键字 
	{
		unsigned long birthday;//使用生日作为密码 
		unsigned short ssn;// 使用身份证后四位作为密码 
		char *pet;//使用宠物名字作为密码 	
	};  //一定要加分号; 
	
	mima pwd; //创建一个mima联合类型的变量pwd 
	
	//对成员进行赋值
	pwd.birthday=200000616;//将 200000616 存入 联合的birthday成员里 
	std::cout<<pwd.birthday<<"\n";  //200000616
	
	pwd.pet="xaoibai";//将 0226 存入 联合的ssn成员里 , 并丢弃(覆盖) birthday成员里的值 
	std::cout<<pwd.pet<<"\n"; //xaoibai
	

	std::cout<<pwd.birthday<<"\n"; //4710402:xaoibai这个字符串的第一个元素的地址 (字符串的首地址) 
	
	return 0;
 } 



二、枚举

1.枚举类型的基本语法格式

//定义枚举类型 
enum weekdays{ Monday, Tuesday,Wednesday, Thursday, Friday};//注意:这里不需要使用引号,因为枚举值不是字符串 

2.创建枚举enum类型的变量

	//创建枚举类型weekdays的变量 
	weekdays today;

3.对成员进行赋值

	//对枚举类型的变量today赋值 
	today=Monday; //值只能w为定义好的枚举类型
	std::cout<<today<<"\n"; //0   编辑器会按照各个枚举值在定义时出现的先后顺序把他们与0~n-1的整数关联起来(n是枚举值的总总个数)
	
	today=Tuesday;
	std::cout<<today<<"\n"; //1

4.使用枚举类型的连个好处: 

  • 它们对变量的可取值加以限制
  • 它们可以用作switch条件的case标号。(因为字符串是不能作为标号用的)
#include<iostream>

int main()
{
	//定义枚举类型 
	enum weekdays{ Monday, Tuesday,Wednesday, Thursday, Friday};//注意:这里不需要使用引号,因为枚举值不是字符串 
	
	//创建枚举类型weekdays的变量 
	weekdays today;
	
	//对枚举类型的变量today赋值 
	today=Monday; //值只能w为定义好的枚举类型
//	std::cout<<today<<"\n"; //0   编辑器会按照各个枚举值在定义时出现的先后顺序把他们与0~n-1的整数关联起来(n是枚举值的总总个数)
	
	today=Tuesday;
//	std::cout<<today<<"\n"; //1
	
	switch(today)
	{
		case Tuesday:
			std::cout<<"今天不是星期一";
	 } 
	
	 
 } 



三、类型别名

  • Typedef 保留字,使用它可以为一个类型定义创建一个别名。
  • 例如,我们不喜欢使用 int* 来创建指针,可以像下边这样定义一个类型别名:
typedef int* intPointer;

                                        (这样,intPointer 就等于 int*)

在此之后,我们就可以像下面这样来定义整型指针了:

 intPointer myPointer;


未完待续。。。 

http://www.dtcms.com/a/113109.html

相关文章:

  • Unity UGUI使用手册
  • 基于spring boot的外卖系统的设计与实现【如何写论文思路与真正写出论文】
  • (八)PMSM驱动控制学习---滑膜观测器
  • Pycharm 启动时候一直扫描索引/更新索引 Update index/Scanning files to index
  • Java学习总结-io流-其他流-全体系
  • Raft算法
  • hydra小记(一):深入理解 Hydra:instantiate() 与 get_class() 的区别
  • 【Linux】日志模块实现详解
  • Android学习总结之应用启动流程(从点击图标到界面显示)
  • Java面试黄金宝典35
  • python 重要易忘 语言基础
  • 使用MATIO库写入MATLAB结构体(struct)数据的示例程序
  • 医疗思维图与数智云融合:从私有云到思维图的AI架构迭代(代码版)
  • devbox加cursor编写项目到上线,不到10分钟
  • Day20 -自动化信息收集工具--ARL灯塔的部署
  • APP的兼容性测试+bug定位方法
  • AI 如何帮助我们提升自己,不被替代
  • Redis数据结构之List
  • 重生之我是去噪高手——diffusion model
  • 第三十章:Python-NetworkX库:创建、操作与研究复杂网络
  • 复古千禧Y2风格霓虹发光酸性镀铬金属短片音乐视频文字标题动画AE/PR模板
  • 15.1linux设备树下的platform驱动编写(知识)_csdn
  • 简单程序语言理论与编译技术·22 实现一个从AST到RISCV的编译器
  • HarmonyOS应用开发者高级-编程题-001
  • keil软件仿真
  • java高并发------线程的六种状态
  • 蓝桥云客--破译密码
  • CUDA学习--体验GPU性能
  • 【Linux学习笔记】初识进程概念和进程PCB
  • FreeRTOS的空闲任务