C++自定义数据类型

C++中有以下几种自定义数据类型方式:typedef、union、enum

typedef

typedef只是用于重命名一种已有的数据类型。

typedef char C;                //C c即char c
typedef char field [50]; //field s即char[50]

注意第二种用法,数组的维数[50]是写在最后的。

union

union中的每个成员共享同一段内存(每个成员的起始内存位置都是一样的),整个union的大小取决于最长的成员的大小。


union mix_t
{
long l;
struct
{
short hi;
short lo;
}s;
char c[4];
}mix;

这个union的内存示意图如图下所示(注意32位机器上,char为1byte,short为2bytes,long为4bytes)

匿名union


非匿名union(union的名字为price)


struct
{
char title[50];
char author[50];
union
{
float dollars;
int rmbs;
} price;
} book;

匿名union(union没有名字)


struct
{
char title[50];
char author[50];
union
{
float dollars;
int rmbs;
};
} book;

那么这两种结构的不同就是元素的访问方式不同,假如我们要访问dollars这个元素,第一种是book.price.dollars,第二种是book.dollars。

enum


枚举类型,其中枚举值是常量,而不是变量。

enum days{Mon, Tue, Wed, Thur, Fri, Sat, Sun};
days today = Mon;

其中Mon其实是0,Tue是1,以此类推。

当然Mon不一定要从0开始,所以可以这样写……

enum days{Mon=1, Tue, Wed, Thur, Fri, Sat, Sun};

其中Mon是1,Tue是2,以此类推。

时间: 2024-10-25 17:28:49

C++自定义数据类型的相关文章

Oracle自定义数据类型 1

原文 oracle 自定义类型 type / create type 一 Oracle中的类型 类型有很多种,主要可以分为以下几类: 1.字符串类型.如:char.nchar.varchar2.nvarchar2.2.数值类型.如:int.number(p,s).integer.smallint.3.日期类型.如:date.interval.timestamp.4.PL/SQL类型.如:pls_integer.binary_integer.binary_double(10g).binary_fl

结合手机上网流量业务来说明Hadoop中的自定义数据类型(序列化、反序列化机制)

大家都知道,Hadoop中为Key的数据类型必须实现WritableComparable接口,而Value的数据类型只需要实现Writable接口即可:能做Key的一定可以做Value,能做Value的未必能做Key.但是具体应该怎么应用呢?--本篇文章将结合手机上网流量业务进行分析. 先介绍一下业务场景:统计每个用户的上行流量和,下行流量和,以及总流量和. 本次描述所用数据: 日志格式描述: 日志flowdata.txt中的具体数据: 接下来贴出详细代码,代码中含有详细注释,从代码中可以看出,

erlang自定义数据类型

Erlang系统自带的基础数据类型有:atom.tuple.list.binary.pid.float.number.port.reference.record. 用户可以通过通过命令type来自定义数据类型,实现方法: -type device() :: atom() | pid(). -type prompt() :: atom() | string(). 定义完后,可以在模块中使用export_type,将用户自定义类型导出,以便其他模块重用. -type env() :: [{atom(

【VBA编程】04.使用自定义数据类型

使用自定义数据类型存储输入数据,并通过弹出窗口展示 [代码区域] Type lianxiren ' name As String Sex As String End Type Sub aa() Dim record As lianxiren '声明一个lianxiren类型的变量 record.name = InputBox("请输入名称", "记录联系人信息") record.Sex = InputBox("请输入性别", "记录联系

Hadoop 学习自定义数据类型

(学习网易云课堂Hadoop大数据实战笔记) 序列化在分布式环境的两大作用:进程间通信,永久存储. Writable接口, 是根据 DataInput 和 DataOutput 实现的简单.有效的序列化对象. MR的任意Value必须实现Writable接口: MR的key必须实现WritableComparable接口,WritableComparable继承自Writable和Comparable接口: (本节先讲自定义value值,下一节再讲自定义key值,根据key值进行自定义排序) 以

AIDL使用中报错找不到自定义数据类型的解决办法

在研究Android多进程编程的时候,照书敲了一个AIDL的例子.其中,用Android Studio自动生成了AIDL文件,会放进aidl文件夹,其中使用到了一个自定义数据类型,于是在aidl文件夹下会有3个文件,如下图所示. IBookManager中定义服务器提供的接口,其中用到了自定义数据类型Book,除了要用java实现Book类(必须implement parcelable)外,还要添加同名的Book.aidl文件,里面有两句代码. package *.aidl;parcelable

第六讲 自定义数据类型

为什么要使用自定义数据类型呢?原因很简单,在现实生活中,比如一个学生他有姓名,学号,年龄,身高,出生年月,而在上一讲中,我们提到的数据类型无法满足现实生活需求,这个时候,自定义数据类型该派上用场了,我们可以定一个学生类型.从而达到我们的需求了.自定义数据类型又可以分为子界类型,数组类型,记录类型,枚举类型,指针类型,集合类型等等... 下面分别对这些数据类型讲解 子界类型 子界类型定义了某种类型的取值范围(因此定名subrange).你可定义整数类型的子界类型,如取值从1到10或从100到100

golang自定义数据类型查询与插入postgresql中point数据

golang自定义数据类型查询与插入postgresql中point数据 具体代码如下: package main import ( "bytes" "database/sql" "database/sql/driver" "fmt" _ "github.com/lib/pq" "strconv" "strings" ) // 自定义支持类型 type Point s

Hadoop-MapReduce之自定义数据类型

以下是自定义的一个数据类型,有两个属性,一个是名称,一个是开始点(可以理解为单词和单词的位置) MR程序就不写了,请看WordCount程序. package cn.genekang.hadoop.mr.RealignerTargetCreator; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import org.apache.hadoop.io.WritableCompara