C++__自定义数据类型
来源:互联网 发布:手机全屏时钟软件 编辑:程序博客网 时间:2024/05/17 22:20
C++将用户自己指定的、包含有若干个类型不同或相同数据项的这样一种组合项数据类型称为结构体。
声明一个结构体类型的一般形式为:
struct 结构体类型名
声明结构体类型的位置一般在文件的开头,在所有函数(包括main函数)之前,以便本文件中所有的函数都能利用它来定义变量。当然也可以在函数中声明结构体类型。
2 结构体类型变量的定义方法及其初始化
声明的结构体类型相当于一个模型,它没有具体的数据,系统也不为其分配实际的内存单元。为了能在程序中使用结构体类型的数据,应当定义结构体类型的变量,并在其中存放具体的数据。
1. 定义结构体类型变量的方法(3种)
(2)在声明类型的同时定义变量
定义的一般形式为
struct 结构体名
{ 成员列表
(3)直接定义结构体类型变量
定义的一般形式为
struct
{ 成员列表
- 不要误认为结构体类型都有相同的结构。实际上,每一种结构体类型都有自己的结构。
- ② 类型与变量是不同的概念,不要混淆。只能对结构体变量中的成员赋值,而不能对结构体类型赋值。在编译时,是不会为类型分配空间的,只为变量分配空间。
- ③ 对结构体中的成员,可以单独使用,它的作用与地位相当于普通变量。
- ④ 结构体中的成员名可以与程序中的变量名相同,但二者没有关系。
- ⑤结构体中的成员也可以是一个结构体变量。
- 2.结构体变量的初始化
student1= student2;
(2)可以引用一个结构体变量中的一个成员的值。引用结构体变量中成员的一般方式为
student1.num=10010;
cout<<student1; //不合法
cout<<student1.num; //合法
sum=student1.score+student2.score;
student1.age++;
cout<<&student1; //输出student1的首地址
- 4 结构体数组
- 1.定义结构体数组
struct Student //声明结构体类型Student
{ int num;
char name[20];
char sex;
int age;
float score;
charaddr[30];
};
Studentstu[3]; //定义Student类型的数组stu - 2.结构体数组的初始化
stu[3]={{10101,″LiLin″,′M′, //可以不指定元素个数
18,87.5, ″103 Beijing Road″},
{10102,″ZhangFun″,′M′,
19,99,″130 Shanghai Road″},
{10104,″WangMin″,′F′,
20,78.5,″1010,Zhongshan Road″}};
- 1.定义结构体数组
- 5指向结构体变量的指针
一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以用一个指针变量来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。也可以用指针变量来指向结构体数组中的元素。
1.通过指向结构体变量的指针引用结构体变量中的成员2. 用结构体变量和指向结构体变量的指针构成链表 - 链表是一种常见的重要的数据结构。下图表示了最简单的一种链表(单向链表)的结构。
- 链表有一个“头指针”变量,一般以head表示,它存放一个地址,该地址指向一个元素。链表中的每一个元素称为“结点”,每个结点都应包括两个部分:用户需要用的实际数据和下一个结点的地址。
6 结构体类型数据作为函数参数
将一个结构体变量中的数据传递给一个函数的方法有下列3种:
(1) 用结构体变量名作参数。一般较少用这种方法。
(2) 用指向结构体变量的指针作实参,将结构体变量的地址传给形参。
(3)
用结构体变量的引用变量作函数参数。
说明:
① 用结构体变量作实参和形参,程序直观易懂,但效率不高。
② 用指针变量作为实参和形参,空间和时间的开销都很小,效率较高,但程序不直观。
在软件开发过程中,常常需要动态地分配和撤销内存空间(如动态链表中结点的插入与删除)。在C语言中是利用库函数malloc和free来分配和撤销内存空间的。而C++提供了较简便而功能较强的运算符new和delete来取代malloc和free函数。
new运算符的一般格式为
delete运算符的一般格式为
delete 指针变量
delete [ ]
指针变量
说明:
① 用new分配数组空间时不能指定初值。
② 用new所开辟的存储空间,只能通过new返回的一个指向所分配空间的地址进行访问,而无法直接通过变量名进行访问。
1共用体的概念
声明共用体类型的一般形式为
union 共用体类型名
{成员列表
};
定义共用体变量的一般形式为
2 对共用体变量的访问方式
3 共用体类型数据的特点
(1) 使用共用体变量的目的是希望用同一个内存段存放几种不同类型的数据。但请注意: 在每一瞬时只能存放其中一种,而不是同时存放几种。
(2) 能够访问的是共用体变量中最后一次被赋值的成员,在对一个新的成员赋值后原有的成员就失去作用。
(3) 共用体变量的地址和它的各成员的地址都是同一地址。
如果一个变量只有几种可能的值,可以定义为枚举类型(enumeration)。所谓“枚举”是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。
声明枚举类型的一般形式为
enumweekday{sun,mon,tue,wed,thu,fri,sat};
定义枚举变量的一般形式为
说明:
(1) 对枚举元素按常量处理,故称枚举常量。
(2) 枚举元素作为常量,它们是有值的,C++编译按定义时的顺序对它们赋值为0,1,2,3,…。也可以在声明枚举类型时另行指定枚举元素的值。
(3) 枚举值可以用来做判断比较。
① typedef int INTEGE; //用标识符INTEGER代表int类型
说明:习惯上常把用typedef声明的类型名用大写字母表
(1) typedef可以声明各种类型名,但不能用来定义变量。用typedef可以声明数组类型、字符串类型,使用比较方便。
(2) 用typedef只是对已经存在的类型增加一个类型名,而没有创造新的类型。
(3) 当在不同源文件中用到同一类型数据(尤其是像数组、指针、结构体、共用体等类型数据)时,常用typedef声明一些数据类型,把它们单独放在一个头文件中,然后在需要用到它们的文件中用#include命令把它们包含进来,以提高编程效率。
- C++__自定义数据类型
- C++__数据类型和表达式
- (C#)--返回自定义数据类型
- c语言-自定义数据类型
- 【C语言学习】01__基本数据类型分析
- WebServices(C#)--返回自定义数据类型
- WebServices(C#)--返回自定义数据类型
- C语言typedef自定义数据类型
- c++(16)自定义数据类型
- C语言程序设计---9:自定义数据类型
- Demo01数据类型__整型__浮点型
- 自定义数据类型,操作符重载实例[C#]
- 15、C语言用户自定义数据类型
- c++primer笔记--2.6自定义数据类型
- C语言(7)------使用typedef自定义数据类型
- C泛型__数据结构
- C++__程序设计初步
- C++__指针
- linux下IPTABLES配置详解
- linux 不同服务器scp免密远程传输文件实例
- 设计模式——命令模式(Command Pattern)
- 使用Axis2开发webservice服务端接口+axis开发的客户端调用
- Tkinter 学习笔记 —— 标准属性
- C++__自定义数据类型
- 时间合理的分配给自己的提示
- Android Studio中新增整体的activity类文件,重新编译后提示“程序包R不存在”解决
- leetcode 404. Sum of Left Leaves
- Word快捷键大全
- SyncAdapter同步机制
- transient的用途
- 机器学习
- 如何成为一名真正的数据分析师或者数据工程师