c语言从入门到精通第12章.ppt

c语言从入门到精通第12章.ppt

ID:52266747

大小:211.51 KB

页数:41页

时间:2020-04-03

c语言从入门到精通第12章.ppt_第1页
c语言从入门到精通第12章.ppt_第2页
c语言从入门到精通第12章.ppt_第3页
c语言从入门到精通第12章.ppt_第4页
c语言从入门到精通第12章.ppt_第5页
资源描述:

《c语言从入门到精通第12章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第12章指针的深入研究——指针进阶指针与数组指针与字符串综合应用——报数游戏跟我上机第12章指针的深入研究——指针进阶指针与数组指针与字符串综合应用——报数游戏跟我上机第12章指针的深入研究——指针进阶指针与数组指针与字符串综合应用——报数游戏跟我上机第12章指针的深入研究——指针进阶指针与数组指针与字符串综合应用——报数游戏跟我上机第12章指针的深入研究——指针进阶指针与数组指针与字符串综合应用——报数游戏跟我上机12.1指针与数组12.1.1指针与数组12.1.2数组名作为指针12.1.3指针与多维数组12.1.4指针与数组参数12.1.1指针与数组指针用于存储地址,他和数组名紧密的联

2、系在一起。下图就显示了一个数组名称为grade,包含5个整型数据的一维数组,这里每个整型元素占用4个字节。12.1.1指针与数组访问数组元素,我们可以使用下标来实现,比如我们要访问数组元素grade[3],在之前的章节里我们详细的讲解过,但是那时使用的方法其实隐藏了数组每一个元素的地址。根据之前讲过的地址的概念,加之我们已知的数组的特点,这个特点就是数组在内存总占用一块连续的存储区域,这样的话,如果我们知道数组的首地址,针对grade这个数组,就是已知grade[0]的地址,我们就可以通过增减偏移量,得到garde[3]的地址,从而访问到garde[3]的元素值12.1.1指针与数组&gr

3、ade[3]=&grade[0]+3*4上面表达式的含义是gradep[3]的地址等于grade[0]地址加上12。写成以下的通式:数组中下标为N元素的地址=数组的首地址+N*sizeof(DataType)例如:intgrade[5];/*定义array为包含5个整型数据的数组*/int*p;/*定义p为指向整型变量的指针变量*/p=&grade[0];12.1.1指针与数组【范例12-1】使用指针访问数组元素,分别使用下标和指针访问数组元素01#include02intmain(void)03{04inti;05intgrade[]={2,5,9,4,6};06int

4、*p;07p=&grade[0];/*指针指向*/08printf("使用下标访问数组元素:");09for(i=0;i<5;i++)/*下标访问*/10printf("数组grade的第%d个元素是%d",i,grade[i]);11printf("使用数组指针访问数组元素:");12for(i=0;i<5;i++)/*指针访问*/13printf("数组grade的第%d个元素是%d",i,*(p+i));14return0;15}12.1.1指针与数组数组元素下标符号指针符号元素0grade[0]*p元素1grade[1]*(p+1)元素2grade[2]*(p+2)

5、元素3grade[3]*(p+3)元素4grade[4]*(p+4)需要注意的是*(p+i)表达式中的括号是必须有的,不能省略,如果我们遗漏了小括号,将变成这样的表达式*p+i,它的含义之前在指针变量处已经进行了讲解,是在p所指向的存储单元的数值基础上在i,因为我们始终没有改变指针p的指向。12.1.2数组名作为指针每个创建的数组,数组名就成为编译器为这个数组所创建的指针常量名称,存储的是数组第一个元素的起始地址,也是我们所说的数组首地址。这样,我们就有多了一种获取数组元素地址的手段。如【范例12-1】中代码“p=&grade[0];”就可以改写为“p=grade;”。12.1.2数组名作

6、为指针【范例12-2】使用数组名作为指针访问数组元素。01#include02intmain(void)03{04inti;05intgrade[]={2,5,9,4,6};06int*p;07p=grade;/*指针赋值*/08printf("使用数组名访问数组元素:");09for(i=0;i<5;i++)/*使用数组名*/10printf("数组grade的第%d个元素是%d",i,*(grade+i));11printf("使用数组指针访问数组元素:");12for(i=0;i<5;i++)/*使用指针变量*/13printf("数组grade的第%d

7、个元素是%d",i,*(p+i));14return0;15}12.1.2数组名作为指针面的代码大家一起来分析一下,看看错了吗?grade=grade+3;结果是有误。原因是,grade是数组名,它是编译器为这个数组创建的指针常量,常量当然是不能够再赋值的。再看下面的代码,是否有问题?p=grade;p=p+3;结果是正确的。原因是,p是指针变量,它初始值是grade数组的首地址,之后根据需要修改了p的值,也就是改变

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

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

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