复习笔记-数据类型2
2008-01-10 23:35 libiver 阅读(137) 评论(0) 编辑 收藏 举报1、struct
Struct在C++语言中既可以有成员变量,也可以有成员函数的,这是与C语言的区别
Struct Array(结构体数组):就是数组元素为一个结构体
eg:struct Person{
char Name;
int Age;
char Sex;
char Address[50];
};
Person PersArr[2] = { // 表示元素为Person结构体的数组
{“Leezhm”,24,’M’,”中国浙江金华”},
{“Lizhm”,22,’F’,”中国湖北荆州”}};
2、union
注意与数组、结构体的区别:
Array |
只能够存储一个类型的多个数据 |
Struct |
只能够存储不同类型的多个数据 |
Union |
只能够存储不同类型的一个数据 |
由于Union中的成员的类型是不的变化的,所以union为了有足够的空间来存储最大的成员,所以union的长度为其最大成员的长度。
3、enum
enum Week{Monday = 1, Tusday, Wednesday, Thursday, Friday, Saturday, Sunday}
Week today;
today = Monday; // valid;
today = 3 ; // Wednesday = 3, not valid;
today = (Week)3; // valid;
today = 5; // not valid;
注意:枚举范围是指介于最大和最小之间,即使中的值是不存在的。
最大值是大于枚举中的最大实际值的 且是最小的2的幂,在
将它减去1。下限如果不小于0,则取值为0;否则采用与上
限计算一样的方法,但加上负号。
eg:enum bits{one = 1, two = 2, four = 4, eight = 8};
bits flag = 6; // 是正确的,因为6在枚举范围中。
上限 = 24 – 1 = 15;
下限 = 0;(如果最小值为-6,则下限 = - 23 – (-1) = -6)
3、pointer
计算机在存储数据时,应该要知道一个数据的一些基本数据,如:
①、数据的存储位置
②、数据的大小
③、数据的类型
我们知道虽然所以的指针在内存中占用4byte(windows 32bit OS),但是一个char指针和
double指针分别指向的char和double变量在内存中所占用的字节数是不同的,并且它们存
储值时使用的内部格式也不一样,因此指针声明必须指定指针指向的数据类型,所以指针
不仅仅是指针,而且是指向特定类型的指针,不然指针就可以声明为万能类型的。记住在
C++中指针是复合类型。
在C++中创建指针时,计算机将分配用来存储地址的内存,但不会分配用来存储指针所
指向的数据的内存。所以下面是错误的,
eg : char *pCh;
*pCh = ‘m’; //错误,