第六章指针余.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章指针余

四、指针数组 指针数组:一个数组的所有元素均为指针。即指针数组是用来存放一批地址的。 1、指针数组的定义 类型 *数组名[元素个数]; 定义了一个i数组,其中可存放10个地址值,这些地址均指向整型数据。 i[4]=number; 将整型变量number的地址赋给(存入)i[4],变量number的值可表示为*i[4]。 int *i[10]; 这里的类型是指数组中存放的指针指向数据的类型。 2、指针数组在字符串处理中的应用 需处理5个字符串:at,for,programming,in,out, char word[5][12]={“at”,”for”,”programming”,”in”,”out”}; 数组在内存中的 分布如右所示 char word[5][12]; 一个指针数组就可以表示多个字符串。 (1)、字符数组与字符串 \0 t u o \0 n i \0 g n i m m a r g o r p \0 r o f \0 t a char *word[5]={“at”,”for”,”programming”,”in”,”out”}; (2)、指针数组与字符串 数组中仅保存了5个地址。设这5个地址在内存中存储如下 t u o \0 n i \0 g n i m m a r g o r p \0 r o f \0 t a \0 1010 1013 1017 1029 1032 word[0]=1010, word[1]=1013, word[2]=1017, word[3]=1029, word[4]=1032 void error(int num) { char *er[]={“open file error”, ”read error”,“write error”, “memory error”}; printf(“%s\n”, er[num]); } 编写一个函数,根据不同的错误号,显示相应的错误信息。 教材P196例6.13,P197例6.14 §3 指针与函数 指针与函数的关系包括三个方面:函数的参数为指针、函数的返回值为指针、指针指向的是函数。 一、指针作为函数参数 main() { void fun(int *p1, int *p2); int i=5, j; fun(i, j); printf(“%d,%d\n”, i, j); } void fun(int *p1, int *p2) { *p2=*p1+3; } 指针(即地址)作为函数参数,则相应的实参也必须是地址类的参数。 显示: 5,8 通过对地址的操作,实现了被调用函数反作用于调用函数的目的。 教材P203例6.19 教材P109例4.7 单纯的虚实结合后交换形参的值不影响实参。 教材P121例4.16 设置全局变量可以实现交换变量的值。 下面利用指针来实现交换变量的值。 main() { void swap(int *p1, int *p2); int a,b; a=3;b=5; printf(“a=%d,b=%d\n”,a,b); swap(a,b); printf(“a=%d,b=%d\n”,a,b); } void swap(int *p1, int *p2) { int p; p=*p1; *p1=*p2; *p2=p; } 显示: a=3, b=5 a=5, b=3 二、数组指针作为函数参数 用数组名作为实参,可将数组的起始地址传给形参。 由于指针变量和数组名一样,都是代表地址的,故可通过指向数组的指针作实参,而把数组的起始地址传给形参。 教材P204例6.20及P205程序 教材P206例6.21 * 第六章 指 针 (教材P178) 指针是C语言中一个非常重要的概念,也是C语言的主要特点之一。 §1 指针概述 地址与指针 (1)直接与间接的概念 (2)计算机的寻址方式 计算机的内存中每一个字节都有一个编号,这个编号就是该字节在内存中的地址。 每一个变量都有一个起始地址编号,根据该地址就能获得变量的值。 例如 1006 x 3.14 1002 i 8 1000 地址 直接寻址方式:变量名是地址的抽象,通过变量名 获取数据就是通过地址获取数据。 int i=8; float x=3.14; 地址1000指向i 地址1002指向x 2004 px 1002 2002 pi 1000 2000 地址 1006 x 3.14 1002 i 8 1000 地址 间接寻址方式:通过变量名pi和px先得到两个地址1000和10

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档