1 / 78
文档名称:

第6章 数据存储.ppt

格式:ppt   大小:1,803KB   页数:78页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第6章 数据存储.ppt

上传人:联系 2017/8/18 文件大小:1.76 MB

下载得到文件列表

第6章 数据存储.ppt

相关文档

文档介绍

文档介绍:《计算基础——C++语言实现》
在进行比较复杂的运算时,通常会借助纸张完成运算过程。在利用计算机解决实际问题时,同样需要一些空间来保存待处理的数据、运算的中间结果和运算的最终结果,这些空间就是计算机的内存空间。本章重点介绍计算机中数据存储的基本原理,以及如何使用C++编写程序操作内存中的数据。通过本章的学****一方面能够掌握计算机中数据存储的基本原理;另一方面能够使用C++提供的指针类型操作内存中的数据,解决实际问题。本章还介绍指针与函数、引用、引用与函数、指针相减运算和关系运算等方面的内容。
第6章数据存储
2
人们在进行比较复杂的运算时,通常会借助纸张完成运算过程。在利用计算机解决实际问题时,同样需要一些空间来保存待处理的数据、运算的中间结果和运算的最终结果,这些空间就是计算机的内存空间。
内存空间中含有大量的存储单元,每个存储单元由一个唯一的内存地址标识,可以存放1个字节的数据,内存地址的编号从0开始,顺次增1,图6-1内存地址示例即对于容量为N的内存,其内存地址编号为0~N-1,如图6-1所示。
数据存储的基本原理
3
在32位系统中,内存地址由32位二进制数组成,内存地址编号从0开始、最大为232-1,因此,32位系统理论支持的最大内存容量为232(=4G)字节。而在64位系统中,内存地址由64位二进制数组成,因此,64位系统理论支持的最大内存容量为264(=16777216T)字节。
在运行一个程序时,系统将分配给该程序一些内存空间,根据内存空间中存储的数据类型不同,可将其分为代码区、全局数据区、堆区和栈区4个区域(自学)。
定义任何一个变量,系统都会为其分配一定大小的内存空间,访问变量实际上就是访问其所对应内存空间中的数据。
数据存储的基本原理
4
例如,在C++中,有如下变量定义语句: int a=0x61626364;系统会为a分配sizeof(int)=4字节的内存空间,并且该片内存空间中所存储的数据为0x61626364,如图6-2所示。
在前面的章节中,都是使用通过变量名去访问对应内存中数据的方式。实际上,C++还提供了另外一种通过指针直接访问内存中数据的方式。
数据存储的基本原理
5
指针是用于存放内存地址的一种数据类型。指针可以是常量,例如数组名就是一个指针常量,表示该数组所占据内存空间的首地址。指针也可以是变量,例如可以定义一个指针类型的变量保存一个内存地址。在程序设计中,可以使用指针常量或指针变量直接操作它们所指向的内存空间中的数据。下面先介绍指针变量的定义、初始化和访问方法。
指针变量的定义
指针是一种存储地址的数据类型,因此,也可以定义指针类型的变量——指针变量。与其他类型的变量一样,在使用指针变量之前必须先定义,其定义形式为:
<数据类型> *<变量名>;
指针
6
其中,<数据类型>表示指针变量所指向内存空间中数据的类型,*表示所要定义的变量为一个指针变量,而不是普通变量。*作用于变量名,表示紧随其后的变量为一个指针变量。
例如,要同时定义两个int型指针变量p1和p2,必须写成如下形式:
int *p1, *p2;
如果写成:
int *p1, p2;
则表示定义了一个指针变量p1和一个普通变量p2。
指针
7
指针是一种数据类型,所以也可以创建一个指针类型的数组。指针数组同样可以有不同的维数,这里只给出一维指针数组的定义形式:
<数据类型> *<数组名>[<常量表达式>];
指针数组中的每个元素都是指向同一数据类型的指针变量,指针数组元素的访问方法与一般数组元素的访问方法完全一样,例如:
int *pArr[3];
语句定义了一个包含3个元素的一维数组,每个元素pArr[0]、pArr[1]、pArr[2]都是一个int型指针变量。
指针
8
指针变量的初始化
同普通变量一样,在定义指针变量的同时可以对其进行初始化,其初始化形式为:
<数据类型> *<变量名>=<指针表达式>;
其中,<指针表达式>是指计算结果为内存地址的表达式。
例如:
int a;
int *p=&a;
指针
9
使用指针访问内存中的数据
一个指针指向有效的内存地址后,就可以通过该指针访问其所指向内存空间中的数据,访问形式为:
*<指针表达式>
其中,*被称为间接访问运算符,或取内容运算符,其与取地址运算符&的功能相反,即对于任一变量a有: *(&a)等价于a。
指针
10
在程序中既可以修改指针变量所指向内存中的数据,也可以修改指针变量所指向的内存地址。例如,已知“int a=5, b=10, *p