第12章指针运用

第12章指针运用

ID:44978036

大小:248.50 KB

页数:43页

时间:2019-11-06

第12章指针运用_第1页
第12章指针运用_第2页
第12章指针运用_第3页
第12章指针运用_第4页
第12章指针运用_第5页
资源描述:

《第12章指针运用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C语言程序设计—提高篇第12章指针的高级应用内容概述指向多维数组的指针指向函数的指针返回指针值的函数指针数组指向指针的指针复习数组的指针的含义,学习通过指针引用多维数组的元素,了解指向数组的指针作为函数参数的传递过程;了解函数指针的概念,正确地利用指针调用函数;掌握返回指针的函数的定义和调用;初步认识指向指针的指针,进而理解指针数组的应用;教学目标12.1指针与函数正确理解一个函数应从以下几个方面考虑:函数参数(形参和实参)代表函数实体的函数名函数返回值类型理解函数与指针的关系也要从这几个方面考虑:指针作为函数的参数函数的返回值是指针指向函数的指针。12.1.1指针型函数C语言中允许一个函数的

2、返回值是一个指针(地址),这种返回指针值的函数称为指针型函数。定义形式类型说明符*函数名([参数列表])说明:函数名之前加*号表明这是指针型函数,即返回值是指针。类型说明符表示了返回的指针值所指向的数据类型。举例int*fun(inta,intb){/*函数体*/}函数fun()是一个指针型函数;返回值是int*类型。【例12.1】编写指针型函数找出两个整型数中的最大值。#includeint*max(int*x,int*y){return(*x>*y?x:y);/*返回最大数的指针*/}main(){inta,b,*p;scanf("%d,%d",&a,&b);p=max(

3、&a,&b);printf("max=%d",*p);}程序运行情况如下:12,25↙max=2512.1.2指向函数的指针几点说明:函数的指令存储在内存中的一段空间中函数也有相应的内存地址函数名代表函数的入口地址函数的入口地址就是函数的指针函数的指针可以用相应类型的指针变量表示,即指向函数的指针变量函数也可以用通过指针变量间接调用定义形式类型(*变量名)([参数类型列表]);说明“类型”表示指针所指函数的返回值的类型;“(*指针变量名)”表示“*”后面定义的变量是指针变量;最后的括号表示指针变量所指的是一个函数,参数类型列表列出函数参数的类型指向函数的指针变量也称函数指针变量举例int(*p

4、f)();表示pf是一个指向函数入口的指针变量,该函数的返回值(函数值)是整型。定义函数指针变量是为了方便对函数的调用。函数指针变量不是固定指向哪一个函数的,在程序中,哪个函数的地址赋予它,它就指向哪个函数。用函数指针变量调用函数的一般形式为:(*指针变量名)(实参表)或指针变量名(实参表)【例12.2】利用函数指针编程实现:输入三角形的两直角边长,求其面积和斜边长。#include#includefloatarea(inta,intb)/*求三角形的面积*/{return(float)a*b/2;}floatlength(inta,intb)/*求三角形的斜

5、边长*/{returnsqrt(a*a+b*b);}main(){intm,n;floats,l;float(*f)(int,int);scanf("%d%d",&m,&n);f=area;s=(*f)(m,n);f=length;l=(*f)(m,n);length()*/printf("area=%.2f,length=%.2f",s,l);}程序运行情况如下:4536↙area=810.00,length=57.63说明:(1)与其他指针变量相同,指向函数的指针变量在使用前也必须进行初始化操作,具体形式为“指针变量=函数名”。不要写成“指针变量=函数名(形式参数)”的形式。若带参数,

6、它就不再是一个地址,而是函数调用,返回的是整型数。例如,指针赋值:f=area;函数调用:s=area(m,n);(2)函数的调用可以通过函数名调用,也可以通过函数指针调用,只需将(*函数指针变量)代替函数名即可。例如,s=area(m,n);相当于s=(*f)(m,n);l=length(m,n);相当于“l=(*f)(m,n);(3)指向函数的指针变量可以先后指向不同的函数,但这些函数的返回值类型应相同,且与函数指针定义中的类型标识符相同。例如f=area;和f=length;(4)函数指针变量不能进行算术运算,即函数指针的移动是毫无意义的。12.2用指针访问二维数组12.2.1二维数组元

7、素的地址设:chara[3][4]={{‘1’,‘2’,’3’,’4’},{‘5’,‘6’,’7’,’8’},{‘9’,’10’,’11’,’12’}};它可以这样理解:数组a有三个元素a[0]、a[1]、a[2];每一个元素代表一行;每行是一个包含4个元素的一维数组。第一行第二行第三行a[0]a[1]a[2]aa+1a+2a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[

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

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

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