代码改变世界

复习笔记-数据类型2

2008-01-10 23:35  libiver  阅读(136)  评论(0编辑  收藏  举报

1struct

   StructC++语言中既可以有成员变量,也可以有成员函数的,这是与C语言的区别

Struct Array(结构体数组):就是数组元素为一个结构体

egstruct Person{

         char Name

         int Age

         char Sex

         char Address[50];

};

Person PersArr[2] = {              // 表示元素为Person结构体的数组

{“Leezhm”,24,’M’,”中国浙江金华”},

{“Lizhm”,22,’F’,”中国湖北荆州”}};

 

2union

   注意与数组、结构体的区别:

Array

只能够存储一个类型的多个数据

Struct

只能够存储不同类型的多个数据

Union

只能够存储不同类型的一个数据

  由于Union中的成员的类型是不的变化的,所以union为了有足够的空间来存储最大的成员,所以union的长度为其最大成员的长度。

 

3enum

   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;否则采用与上

限计算一样的方法,但加上负号。

  egenum bits{one = 1, two = 2, four = 4, eight = 8};

      bits flag = 6; // 是正确的,因为6在枚举范围中。

      上限 = 2­4 – 1 = 15

      下限 = 0(如果最小值为-6,则下限 =  - 23 – (-1) = -6)

 

3pointer

   计算机在存储数据时,应该要知道一个数据的一些基本数据,如:

   ①、数据的存储位置

  ②、数据的大小

 ③、数据的类型

 

我们知道虽然所以的指针在内存中占用4byte(windows 32bit OS),但是一个char指针和

double指针分别指向的chardouble变量在内存中所占用的字节数是不同的,并且它们存

储值时使用的内部格式也不一样,因此指针声明必须指定指针指向的数据类型,所以指针

不仅仅是指针,而且是指向特定类型的指针,不然指针就可以声明为万能类型的。记住在

C++中指针是复合类型。

   C++中创建指针时,计算机将分配用来存储地址的内存,但不会分配用来存储指针所

指向的数据的内存。所以下面是错误的,

  eg char *pCh

        *pCh = ‘m’; //错误,