实用C语言程序设计教程陈建铎电子教案 第6章2.ppt

实用C语言程序设计教程陈建铎电子教案 第6章2.ppt

  1. 1、本文档共116页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 指针 6.1 内存数据的指针与指针变量 指针既是C语言的重点,也是C语言的难点之一。简单的地说,指针就是内存单元的地址。为深刻理解指针的概念,必须弄清楚内存的概念以及数据在内存中是如何存储的,又是如何读取的。 我们都知道,在计算机的硬件构成中,主机是由运算器、控制器和存储器组成,前两者合在一起称为中央处理器,简称CPU,而存储器又分为内部存储器和外部存储器,简称内存和外存,所有数据只有存放在内存中 6.2 指针变量的定义及指针运算 6.3 数组元素的指针 与数组的指针 数组是由若干同类型的数据元素组成的构造类型,在内存中占用一段连续的存储单元。指针变量既然可以指向变量,当然也可以指向数组元素,所谓数组元素的指针就是数组元素的首地址,数组的指针就是数组的首地址,它也是数组的第1元素的地址。引入指针后,对数组元素的引用可以用下标法,也可以用指针法,即通过指向数组元素的指针找到所需的元素。使用指针法访问数组元素能使目标程序占内存少且运行速度快。 6.3 数组元素的指 针与数组的指针 void search(float (*p)[4],int n) {int i,j,flag; for(i=0;in;i++) { flag=0; for(j=0;j4;j++) if (*(*(p+i)+j60) flag=1; if (flag= =1) { printf(No. %d is faile,his score are:\n,i+1); for(j=0;j4;j++) printf(“%5.2f ”,*(*(p+i)+j)); printf(“\n”); } } } 6.4 函数的指针和 返回指针的函数 作为函数,从它是能完成一定功能的一段程序的角度上讲,它应该有入口地址;从它可返回函数值(也可以是不返回值的空类型)的角度上讲,它当然可以返回地址。我们把函数的入口地址称为函数的指针,把返回地址的函数称为可返回指针值的函数。这样,指针就与函数有两方面的联系,即可用指针变量存放函数的指针,也可用指针变量存放函数返回的指针值。 6.4 函数的指针和 返回指针的函数 6.5 字符指针 我们已经知道,C语言中有字符串常量,但没有字符串变量,字符串变量是通过字符数组来实现的。本节给出字符串的指针和指向字符串的指针变量的概念,用字符指针方便、快捷的进行字符串操作。 6.5 字符指针 6.5.2 字符数组和字符 指针变量的区别 虽然用字符数组和字符指针变量都能实现字符串的存储和运算,但它们二者之间是有区别的,不应混为一淡,主要有以下点: (1)字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串第1个字符的地址),并不是将字符串放到字符指针变量中。 6.6 指针数组向指针的指针 6.7 本章小结 题目分析:可用一个3行4列的二维数组存储题目给出的数据,设计average函数用来求总平均成绩,outdata函数用来找出并输出第个i学生的成绩, search查找有不及格课程的学生并输出成绩。在average函数中使用指向变量的指针变量,在outdata函数和search函数中使用指向一维数组的指针变量。 程序如下: float average(float *p,int n) { float *p_end,sum=0,aver; p_end=p+n-1; for(;p=p_end;p++) sum=sum+(*p); aver=sum/n; return aver; } void outdata (float (*p)[4],int i) { int j; printf(the score of NO.%d are:\n,k) for(i=0;i4;i++) printf(%5.2f,*(*(p+i)+j)); } main() { static float score[3][4]= {65,67,70,60,80,87,90,81,90,99,97,98}; float av; av=average(*score,12); printf(average:%5.2f\n,aver); outdata(score,2); se

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档