孙鑫VC教程之第03节指针与数组

上传人:宝路 文档编号:53092168 上传时间:2018-08-28 格式:PPT 页数:31 大小:168.93KB
返回 下载 相关 举报
孙鑫VC教程之第03节指针与数组_第1页
第1页 / 共31页
孙鑫VC教程之第03节指针与数组_第2页
第2页 / 共31页
孙鑫VC教程之第03节指针与数组_第3页
第3页 / 共31页
孙鑫VC教程之第03节指针与数组_第4页
第4页 / 共31页
孙鑫VC教程之第03节指针与数组_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《孙鑫VC教程之第03节指针与数组》由会员分享,可在线阅读,更多相关《孙鑫VC教程之第03节指针与数组(31页珍藏版)》请在金锄头文库上搜索。

1、第三节、数组与指针,目标: 1 一维数组与指针 2数组越界 3指针和堆的内存分配 4丢失指针,一、一维数组与指针,1、什么是数组? 数组是一组数据存储单元,每个单元保存相同数据类 型,每个存储单元成为数组的一个元素。2、什么是指针? 指针是一个变量,它保存了一个变量的地址。 首先我们看一下下面的例子: char a10, *p; p=a;,p是一个char类型的指针,它里面放的是数组a的首地址,即a0;a这里有双重含义:地址,也可以看作是常量指针;里面包含了10个char元素。 在这种情况下,指针可以完成数组的操作,例如,对于数组的访问,可以用指针进行,也可以像数组一样对数组单元赋值和取址。但

2、是数组不能看做普通指针,应该理解成一个固定的地址,她是在编译期间确定的,也可以理解成常量指针。 但是,由于数组名的双重含义,决定了他自己的特性,不信请看下面的程序:,#include #include using namespace std;int main(int argc, char *argv) int a10=1,2,3,4,5,6,7,8,9,10, *p; p=a;coutaendl; cout,我们看到a, &a , &a0输出的结果都是一致的,他们都是数组的首地址,这里a体现的是指针的特性,&a则体现了结构的特性。但是对于p来讲就不一样了,因为指针p在开始的时候开辟了一块自己的

3、内存空间,经过p=a后,p里面放的是数组a的首地址,所以p和&p0结果都是数组a的首地址,但是&p则是指针p本身的内存地址。 那么一维数组究竟是什么含义呢?,实际上,一维数组应该理解成一个线性表,他在内存中开辟了一块连续的内存空间。在对数组访问的时候,实际上,编译器做了一定的转换工作:数组名(数组的起始地址)加上相对于起始地址的相对量(由下标变量给出),得到要访问的数组元素的单元地址,然后再对计算出的单元地址的内容进行访问。例如a3被转换成*(a+3)。,由于数组是在编译期间确定,代表的是一块固定的内存空间,所以数组是不能够改变的,即a+,+a,a-,-a,a+=3,a-=3等都是不允许的,但

4、是指针p做这些动作是毫无问题的。 在win32系统下,任何类型的指针都占4个字节的内存空间。想想为什么?答: 因为指针是是保存变量地址的变量,在win32下,32位地址,正好占用4字节宽。,二、数组越界,例如:1: int a10;2: int i;3: i = 2;4: for(int j = 0;j 上说过以前的delete 方括号中是必须添加个数的,后来由于很容易出错,所以后来的版本就改进了这个缺陷。,下面是个例子,VC上编译通过 #include using namespace std; #include void main() int n; char *p; coutn; /n在运行

5、时确定,可输入17 p=new charn; /申请17个字符(可装8个汉字和一个结束符 /) 的内存空间strcpy(pc,“堆内存的动态分配”);/ coutp指向三维数组的指针; int (*b2) 20; /二级指针; b3=new int 1 20 30; b2=new int 30 20; 两个数组都是由600个整数组成,前者是只有一个元素的三维数组,每个元素为30行20列的二维数组,而另一个是有30个元素的二维数组,每个元素为20个元素的一维数组。,删除这两个动态数组可用下式: delete b3; /删除(释放)三维数组; delete b2; /删除(释放)二维数组; 再次重申:这里的b2的类型是int (*) ,这样表示一个指向二维数组的指针。 b3表示一个指向(指向二维数组的指针)的指针,也就是三级指针. (3)二级指针的指针 看下例 : 参见example1。 int (*p)2 = (int (*)2)new int*32;p0=new int22; p1=new int22; p2=new int22; delete p0; delete p1; delete p2; delete p;,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号