研究式学习——C语言程序设计(第二版) 教学课件 作者 方娇莉 李向阳_ 7第七章指针.pptVIP

研究式学习——C语言程序设计(第二版) 教学课件 作者 方娇莉 李向阳_ 7第七章指针.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
研究式学习——C语言程序设计(第二版) 教学课件 作者 方娇莉 李向阳_ 7第七章指针.ppt

指针;内存地址及数据的存取方式 指针的定义及运算 指向数组的指针 指针操作字符串 语法练习和编程练习;计算机的内存储器就象一个巨大的一维数组,每个数组元素就是一个存储单元 类似每个数组元素的下标,每个内存单元都有一个编号,称为该单元的地址 注意区分内存单元的地址与内存单元的值;在运行一个程序时,程序及其数据(程序、函数、变量、常量、数组等)都要放在内存储器中 编译程序根据对象的数据类型,在内存中为其分配一个或多个连续的存储单元。 在编写程序时,通常是通过名字来使用一个变量或调用某个函数,而变量和函数的名字与其实际的存储地址之间的变换由编译程序自动完成,编译程序按变量名查找其地址,然后对该地址中的内容进行读写操作 ;单元地址 变量名 变量类型 占用单元长度 规定运算操作 值的存放形式;直接访问:变量名代表着该变量已分到的地址,按变量地址存取变量值的方式称为直接访问。 间接访问:这种方式好比我们要找到宝藏,必须先找到埋宝藏的地址,才能根据地址找到宝藏;提出问题;解决该问题的办法有两个: 将变量定义为全局变量,使其携带结果值返回。但全局变量从定义处开始在整个程序执行过程中都占用存储空间,直到程序结束。既浪费空间又不利于程序的模块化结构设计,不提倡。 使用指针变量作为函数的参数。被调函数不能改变实参指针变量的值,但可以改变实参指针变量所指变量的值。运用指针变量作参数,就能使被调函数和主函数在同一变量上操作,从而得到多个返回值。;swap(int *p1,int *p2) { int p; p=*p1; *p1=*p2; *p2=p;};定义指针变量的语法格式为: 类型说明符 *指针变量名1,*指针变量名2,…;;取地址运算符;间接访问运算符* “*”是单目运算符,用于得到指针所指向的变量值,与“”互为逆运算,同时出现时可抵消 例如:float f1=2.5,*fp1=f1,a; a=*fp1; 其中:变量f1的指针(地址)是f1 对fp1作取值运算的表达式为*(fp1),等效于直接访问fp1,得到变量f1的地址; 对fp1作取值运算的表达式为*fp1,等效于直接访问f1,得到变量f1的值2.5。 ;指针的赋值运算 指针变量必须被赋以一个地址值,如:  p=a; /*将变量a的地址赋给指针p*/  p=array; /*将数组array的首地址赋给p*/  p=array[i];   /*将数组array的第i个元素的地址赋给p*/  p=max;   /*max为已定义的函数,将max的入口地址赋给p*/  p1=p2;/*p1和p2都是指针变量,将p2的值赋给p1*/ 注意:不能把一个整数赋给指针变量。 ;main() { char c1=’a’,c2=’b’; float f1=90.0,f2=80.5; char *pc=c1; float *pf=f1; printf(“c1=%x,c1=%c;f1=%x,f1=%4.1f\n”,            pc,*pc,pf,*pf); pc++;pf++; printf(“c2=%x,c2=%c;f2=%x,f2=%4.1f\n”, pc,*pc,pf,*pf); } ;编译器在编译时会将数组的下标转换成指针,因此,使用指针编写数组下标可以节省编译时间 定义指向数组的指针 例:int a[10]; int *pa; pa=a[0];  或 pa=a; 通过指针引用数组元素 经过上述定义及赋值后:*pa就是a[0], *(pa+1)就是a[1], ..., *(pa+i)就是a[i] a[i], *(pa+i), *(a+i), pa[i]都是等效的 不能写 a++,因为a是数组首地址是常量。 ;int a[10],*p; p=a;; ;引用数组元素既可以用下标法也可以用指针法来实现 数组名代表数组的首地址,由编译系统分配,是一个常量,不能进行自增或自减运算 指针变量是一个变量,当它指向数组指针后,数组名和指针变量名可以混用 指针变量可以作为赋值表达式的左值使用,可以自增自减,可以指向数组中任意元素 数组名是常量,不能随意改变; ; ; ; ;;; ; ; ;解决问题的 方法和步骤;特点:结构中包含指向本结构的指针成员,如: struct workertype /*节点类型声明*/  { long workno; char workname[20]; char worksex; int workwages; struct workertype *next;}; /*链接指针定义*/ 用n

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档