博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
章节导学第10章 用户自定义数据类型
阅读量:4144 次
发布时间:2019-05-25

本文共 908 字,大约阅读时间需要 3 分钟。

顾名思义,用户自定义数据类型是程序员自己定义的数据类型。数据类型规定了存储单元的类型,用于定义变量。编译系统不太可能会处理程序员“发明的”“全新的”数据类型,因此,自定义数据类型中的“自定义”是有条件的。程序员只能在C语言“基本数据类型”的基础上,通过限定或组合来定义“新的”“自己的”数据类型。

结构型是最典型的自定义数据类型,与之相关的存储单元由多个类型不同的基本类型存储单元组合而成。当定义一个结构型变量时,就会申请一个这样的存储单元,其中属于它的多个基本类型存储单元都有一个内部的名称,整个存储单元由结构型变量名代表。数组变量虽然也包含了多个存储单元,但实际上通常只使用它表现为基本类型的数组元素。使用结构型变量时多数情况下也是使用其中的某个基本类型存储单元,用结构体成员操作符(.)把结构型变量名和内部的名称结合起来就是相关存储单元的变量名。这样看来,结构型与数组类似,数组变量是多个同类型变量的代表,它包含了多个数组元素,而结构型变量是多个不同类型变量的代表,它包含了多个成员变量。

结构型的作用与数组的不同,结构型变量用于存储程序中属于同一个对象的不同属性的数据。面向对象程序设计语言中的类就是由结构型改进而来。面向对象程序设计语言有C++、Java、C#等,而C语言是典型的结构化程序设计语言。

对于非void型指针变量p,语句p=&p;错误。对于结构型变量s,类似s.next =&s;的语句则可以将多个同类型的结构型变量连接起来串成链表(s.next为变量s的一个成员变量)。链表的作用与数组的类似,将多个数据(变量)组织起来,数据之间有了“次序”,便于用统一的方法进行处理。

联合型变量也包含了多个成员变量,但它们共享存储单元,这就意味着在某个时刻只有一个成员变量是真正可以使用的。有时可以利用一个联合型变量代替多个普通变量以减少程序对存储空间的需求。

枚举型变量只能取定义枚举型时所规定的“标识符”。虽然枚举型本质上是整型,枚举型的“标识符”也只是符号常量,但是,采用枚举型可以极大地提高程序的可读性,同时由于限制了“整型”的取值范围,可以避免程序中用错误的数据给变量赋值,防止出现逻辑错误。

转载地址:http://scdti.baihongyu.com/

你可能感兴趣的文章
关于linux栈的一个深层次的问题
查看>>
rootkit related
查看>>
配置文件的重要性------轻化操作
查看>>
又是缓存惹的祸!!!
查看>>
为什么要实现程序指令和程序数据的分离?
查看>>
我对C++ string和length方法的一个长期误解------从protobuf序列化说起(没处理好会引起数据丢失、反序列化失败哦!)
查看>>
一起来看看protobuf中容易引起bug的一个细节
查看>>
无protobuf协议情况下的反序列化------貌似无解, 其实有解!
查看>>
make -n(仅列出命令, 但不会执行)用于调试makefile
查看>>
makefile中“-“符号的使用
查看>>
go语言如何从终端逐行读取数据?------用bufio包
查看>>
go的值类型和引用类型------重要的概念
查看>>
求二叉树中结点的最大值(所有结点的值都是正整数)
查看>>
用go的flag包来解析命令行参数
查看>>
来玩下go的http get
查看>>
感受一下go协程goroutine------协程在手,说go就go
查看>>
队列和栈的本质区别
查看>>
matlab中inline的用法
查看>>
如何用matlab求函数的最值?
查看>>
Git从入门到放弃
查看>>