C++之 自定义数据类型 枚举、结构体、共用体
1.枚举
枚举类型的声明形式为: enum 枚举类型名 { 变量值列表 };
变量值列表里都是整型变量,另外不要忘记最后面的分号!
比如,enum weekday { sun,mon,tue,wed,thu,fri,sat };
这里的枚举元素sun、mon...都没有指定值,它们就使用默认值,依次为0,1,2...。即sun就是0,mon就是1,...sat是6。也可以在声明枚举类型时指定枚举元素的值,比如
enum weekday { sun=7, mon=1, tue, wed, thu, fri, sat };
这里sun就是7,mon是1,后面的值在mon的基础上依次加1,即tue等于2,wed为3...sat是6。
枚举元素按常量处理,不能对它们赋值除了声明的时候,像sun=0;这样的语句就是非法的。
枚举类型我们声明了以后就能像int、float等类型那样用了,可以定义枚举类型的变量。整数值需要赋给枚举变量时,应进行强制类型转换。
备注:这里只是定义了一个枚举,类似于定义了一个类,后面可以以此枚举为类型,定义相应的枚举对象。
2.结构体
结构体就是由不同数据类型也可以是相同数据类型的若干数据组成的结合体,声明形式为:
这里最后那个分号也不要忘记哦。
结构体类型变量的定义格式如下:结构体类型名 结构体变量名;
可以先声明了结构体类型以后再定义结构体变量,也可以把它们放在一起。
结构体变量占用内存的大小可以用sizeof(结构体类型名或变量名)计算。
在定义结构体变量时可以直接赋初值。结构体成员的使用形式是:结构体变量名.成员名。
struct student //学生信息结构体
{
int num;//学号
char name[20];//姓名
char sex;//性别
int age;//年龄
}stu={97001,"Lin Lin",'F',19}; // 声明结构体类型的同时,定义结构体类型的变量,并赋初值。也可以分开。
int _tmain(int argc, _TCHAR* argv[])
{
cout<<stu.num<<" "<<stu.name<<" "<<stu.sex<<" "<<stu.age;
return 0;
}
3.共同体Union
有的时候需要几个不同类型的变量共用一组内存单元,这时就需要用联合体,联合体类型声明的语法形式为:
联合体类型变量声明的语法形式是:联合体类型名 联合体变量名;。联合体类型变量的引用形式是:联合体变量名.成员名。
联合体类型在内存中是怎样占用内存单元的呢?联合体占用的内存大小是其占内存最大的成员需要的内存大小,就像上边的uarea,它占用的内存大小就是最大成员long需要的4个字节。联合体里同时只能放一个成员的值。uarea放c_data时c_data占用第一个字节,放s_data时s_data占用前两个字节,放l_data时l_data占用全部的4个字节。
C++之 自定义数据类型 枚举、结构体、共用体的更多相关文章
- 5、数组&字符串&结构体&共用体&枚举
程序中内存从哪里来 三种内存来源:栈(stack).堆(heap).数据区(.date): 栈(stack) 运行自动分配.自动回收,不需要程序员手工干预: 栈内存可以反复使用: 栈反复使用后,程序不 ...
- C++结构、共用体、枚举
一.结构 结构是C++OOP的基石.学习有关结构的知识僵尸我们离C++的核心OOP更近. 结构是用户定义的类型,同一个结构可以存储多种类型数据,这使得将一个事物的不同属性构成一个对象成为了可能.另外C ...
- C语言高级-结构,共用体,文件,链表
C语言结构 标准声明方式 struct student{ int age; char sex; }; 这个可以在main函数中定义: struct student ...
- 自定义数据类型 C++ 结构体类型 共同体类型 枚举类型 类类型{}
一.结构体类型 结构体类型,共用体类型,枚举类型,类类型等统称为自定义类型(user-defined-type,UDT). 结构体相当于其他高级语言中的记录(record);例如: struct St ...
- C++复合类型(结构,共用体,枚举)
•结构是用户定义的类型,而结构的声明定义了这种类型的数据属性. 一.关键字struct声明: 定义了一种新类型 struct inflatable{ char name[20];//结构成员 fl ...
- C语言基础 (11) 结构体 ,共用体 枚举 typedef
1 课堂回顾 作用域与生命周期 2 static 局部变量 2 打字游戏 3 内存分区代码分析 4 结构体基本操作 (复合类型[自定义类型 #include <stdio.h> #incl ...
- 瘋子C语言笔记(结构体/共用体/枚举篇)
(一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student { int num; char name ...
- 编程C语言进阶篇——自定义数据类型:结构体
一.结构体 定义方法: 结构名 变量名 特点: 两个同类型的结构变量可以相互赋值,但是结构变量之间不能使用"<","=="等运算符,如果使用则需要对运算符 ...
- 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符
[源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...
随机推荐
- list set map区别及适用场景
list与Set.Map区别及适用场景 1.List,Set都是继承自Collection接口,Map则不是 2.List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重 ...
- selenium中CSS选择器定位
selenium元素定位,CSS选择器定位效率会高很多. CSS选择器用于选择你想要的元素的样式的模式.表格摘自“菜鸟教程”,具体用法可去查阅 选择器 示例 示例说明 CSS .class .intr ...
- Vue-admin工作整理(十): Vuex-Actions(模拟接口请求实现组件字段更新)
思路:通过提交一个 mutation,而不是直接变更状态,它可以包括异步操作,通过请求接口,定义一个方法,第一个参数为对象,在里面能够提取到一些东西,比如:commit,这是一个方法,调用这个comm ...
- ssm+redis整合(通过aop自定义注解方式)
此方案借助aop自定义注解来创建redis缓存机制. 1.创建自定义注解类 package com.tp.soft.common.util; import java.lang.annotation.E ...
- composer学习总结
composer 简介:是php用来管理依赖(dependency)关系的工具,工具包地址:https://packagist.org 下载地址:https://getcomposer.org/ 安 ...
- Windows 下 docker 部署 gitlab ci
一.安装 1. 安装 docker Docker下载 注意:Windows 10 家庭版获取 之前的版本不能直接安装 Docker ,而是需要去安装 Docker Toolbox 我这里安装的是 Do ...
- Fragment调用startActivityForResult导致的回调Activity无法获取正确的requestId的问题
今天遇到了一个问题 从Fragment内调用了startActivityForResult方法设置了requestId是1 但是在Activity内的onActivityResult的回调内 获得的r ...
- 登录获取token,token参数关联至所有请求的请求体内
问题描述: 有些系统接口判断用户是否登录,是校验登录接口成功后传的token值,也就是请求系统所有接口时,前端传参必带登录成功后接口返回的token,后台以此检验是否过期或是否有登录.所有接口都依赖登 ...
- 瀑布流布局(等宽不等高jQuery)
在百度上看见的好多都是引用Masonry插件 ,之后我自己尝试了一个没有使用插件的 <body> <div id="main"> <div cla ...
- mybatis注解调用存储过程
mapper @SelectProvider(type = RoleMenuSqlProvider.class,method = "updateRoleMenuRelation") ...