



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【函数指针】 在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。1函数指针定义函数类型 (*指针变量名)(形参列表);“函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如:int (*f)(int x);double (*ptr)(double x);在定义函数指针时请注意: 函数指针和它指向的函数的参数个数和类型都应该是致的;函数指针的类型和函数的返回值类型也必须是一致的。2函数指针的赋值函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名就行了。例如,int func(int x); /* 声明一个函数 */int (*f) (int x); /* 声明一个函数指针 */f=func; /* 将func函数的首地址赋给指针f */赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。3通过函数指针调用函数函数指针是通过函数名及有关参数进行调用的。与其他指针变量相类似,如果指针变量pi是指向某整型变量i的指针,则*p等于它所指的变量i;如果pf是指向某浮点型变量f的指针,则*pf就等价于它所指的变量f。同样地,*f是指向函数func(x)的指针,则*f就代表它所指向的函数func。所以在执行了f=func;之后,(*f)和func代表同一函数。由于函数指针指向存储区中的某个函数,因此可以通过函数指针调用相应的函数。现在我们就讨论如何用函数指针调用函数,它应执行下面三步:首先,要说明函数指针变量。例如:int (*f)(int x);其次,要对函数指针变量赋值。例如: f=func; (func(x)必须先要有定义)最后,要用 (*指针变量)(参数表);调用函数。例如: (*f)(x);(x必须先赋值)【例】任意输入n个数,找出其中最大数,并且输出最大数值。main() int f(); int i,a,b; int (*p)(); /* 定义函数指针 */ scanf(%d,&a); p=f; /* 给函数指针p赋值,使它指向函数f */ for(i1;iy)?x:y; return(z);运行结果为:343 -45 4389 4235 1 -534 988 555 789The Max Number is:4389【指针函数】一个函数不仅可以带回一个整型数据的值,字符类型值和实型类型的值,还可以带回指针类型的数据,使其指向某个地址单元。 返回指针的函数,一般定义格式为: 类型标识符 *函数名(参数表)int *f(x,y);其中x,y是形式参数,f是函数名,调用后返回一个指向整型数据的地址指针。f(x,y)是函数,其值是指针。如:char *ch();表示的就是一个返回字符型指针的函数,请看下面的例题:【例】将字符串1(str1)复制到字符串2(str2),并输出字符串2.#include stdio.hmain() char *ch(char *,char *); char str1=I am glad to meet you!; char str2=Welcom to study C!; printf(%s,ch(str1,str2);char *ch(char *str1,char *str2) int i; char *p; p=str2 if(*str2=NULL) exit(-1); do *str2=*str1; str1+; str2+; while(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CBJ 2213-2024白酒智能酿造基酒分级入库红外光谱法应用指南
- T/CBJ 2205-2023白酒大曲和酒醅中黄曲霉毒素的检测方法
- T/CATEA 001-2022中国高品质棉花可持续生产
- T/CAS 590-2022天然气掺氢混气站技术规程
- T/CAQI 181-2021具有消毒功能的车载空气净化器技术要求和试验方法
- T/CAPE 13002-2024装配式高效能源站工程技术规程
- 洋河集团面试题及答案
- 国外物理中考试题及答案
- fortran考试题及答案
- 杭州语文面试题及答案
- 安全生产隐患识别图集 问题图片和整改图片对比 危险源识别(中)
- 医药企业管理练习试题附答案(一)
- 中医技能考核评分表
- 《义务教育数学课程标准(2022年版)》解读
- 【课程思政案例】《国际物流》:立德树人深挖教学内容,信义忠诚彰显思政元素
- 贵州省毕节市威宁民族中学高一下学期4月第一次月考语文试卷(PDF版含答案)
- 齿轮箱说明书
- 五输穴的临床运用
- 市场调查与分析考试试题
- 机关事业单位技术工人计算机操作技师考试题库
- 1吨串联中频炉原理技术与分析
评论
0/150
提交评论