《数组与指针》ppt课件

《数组与指针》ppt课件

ID:26943199

大小:321.32 KB

页数:30页

时间:2018-11-30

《数组与指针》ppt课件_第1页
《数组与指针》ppt课件_第2页
《数组与指针》ppt课件_第3页
《数组与指针》ppt课件_第4页
《数组与指针》ppt课件_第5页
资源描述:

《《数组与指针》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十章数组与指针10.1一维数组首地址和数组元素的地址一维数组首地址和数组元素的地址在C语言中,数组占用一串连续的存储单元,如有以下定义:inta[5],*p,i;数组中每个元素都可以看作一个变量,因此每个数组元素均有一个地址,例如元素a[0]的地址可表示为&a[0]。在上面的定义语句中,指针p的基类型为整型,可以指向任意的一个整型存储单元。我们可以使用p=&a[0]将指针p指向数据元素a[0]。由于数组元素在内存中是连续的,因此可以通过移动指针p来访问数组中的每个元素。C语言规定数组名代表数组在内存中的起始地址,即可以使用a表示数组a的首地址。因此也可以使用p=

2、a来让指针p指向数组的起始地址。需要注意的是:a是一个地址常量,它永远指向a数组的首地址。因此不能对a进行重新赋值,a=&i;或a++;这样的赋值语句都是非法的。a[0]a[1]a[2]a[3]a[4]p二.通过指针引用一维数组元素(1)通过指针引用数组元素,如有以下的定义语句:int*p,a[5];p=&a[0];指针变量p指向了数组元素a[0],因此可以使用间接访问运算符“*”来引用变量a[0]。如*p=18;是对p指向的存储空间,即a[0]赋值为18,它等价于a[0]=18;在指针这一章我们学过,可以通过算术运行对指针进行移动。例如p+1表示p所指向存储单元

3、的下一个存储单元,即a[1];p+2指向a[2],p+3指向a[3]……,所以我们可以使用*(p+1)来表示a[1],*(p+2)来表示a[2]……,同样,也可以使用p表示&a[0],p+1表示&a[1],p+2表示&a[2]……例10.1有以下程序:main(){inta[5],*p,i;for(p=a,i=0;i<5;i++)scanf(“%d”,p+i);for(p=a;p

4、0];*(a+1)等价于a[1]……,同样,a等价于&a[0];a+1等价于&a[1]……例10.2有以下程序:main(){inta[5],i;for(i=0;i<5;i++)scanf(“%d”,a+i);for(i=0;i<5;i++)printf(“%d”,*(a+i));}(3)用带下标的指针变量引用一维数组元素,若有以下定义语句:int*p,a[5];p=a;我们可以使用p[0]来表示p指针指向的内存单元,使用p[1]表示p指针指向的内存单元的下一个内存单元。也就是说,可以使用p[0]来表示a[0];p[1]来表示a[1]……因此,对数组元素a[i]可

5、以有4种等价的引用方法:①a[i];②p[i];③*(a+i)④*(p+i)。对应地,对a[i]地址的引用,也有4种等价的引用方法:①&a[i];②&p[i];③a+i④p+i。从上面可以看出,当指针p指向数组a的首地址后,a和p具有相同的引用方法。但是,a和p有着本质的区别:a是数组而p是指针;a不能重新赋值而p可以随意的重新赋值。例10.3有以下程序:main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;printf(“%d”,*p+*q);}程序运行的输出结果是_______。16B)10C)8D)

6、6答案:B例10.4有以下程序:main(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf(“%d”,s);}程序执行后的输出结果是_______。45B)20C)25D)36答案:C10.2二维数组和指针二维数组的首地址和数组元素的地址如有以下语句:inta[2][3],*p,i;数组a如下所示:a[0]a[0][0]a[0][1]a[0][2]a[1]a[1][0]a[1][1]a[1][2]任何一个二维数组由若干个一维数组组成实际上,二维数组a由两个元素组成,分别是a

7、[0]和a[1]。而a[0]和a[1]又分别是两个一维数,如上图所示。a[0]和a[1]可以视为这两个一维数组的数组名,它们分别由3个整型元素组成。其中,a[0]由以下三个元素组成:a[0][0]a[0][1]a[0][2]a[1]由以下三个元素组成:a[1][0]a[1][1]a[1][2]通过前面学习,我们已经知道一维数组名是一个地址常量,其值为数组第一个元素的地址值,此地址的基类型就是数组元素的类型。在以上二维数组中,a[0]和a[1]都是一维数组名,它是一个不可变的地址常量,其值代表每行的首地址。因此,a[0]代表了a[0][0]的地址,a[1]代表了a[

8、1][0]

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。