函数指针

✍ dations ◷ 2025-12-05 03:12:28 #计算机技术

函数指针是一种在C、C++、D语言、其他类 C 语言和Fortran 2003中的指针。函数指针可以像一般函数一样,用于调用函数、传递参数。在如 C 这样的语言中,通过提供一个简单的选取、执行函数的方法,函数指针可以简化代码。

函数指针只能指向具有特定特征的函数。因而所有被同一指针运用的函数必须具有相同的参数和返回类型。

C语言标准规定,函数指示符(function designator,即函数名字)既不是左值,也不是右值。但C++语言标准规定函数指示符属于左值,因此函数指示符转换为函数指针的右值属于左值转换为右值。

除了作为sizeof或取地址&的操作数,函数指示符在表达式中自动转换为函数指针类型右值。因此通过一个函数指针调用所指的函数,不需要在函数指针前加取值或反引用(*)运算符。

以下为函数指针在C/C++中的运用

/* 例一:函式指標直接呼叫 */# ifndef __cplusplus    # include <stdio.h># else    # include <cstdio># endifint max(int x, int y){    return x > y ? x : y;}int main(void){    /* p 是函式指標 */    int (* p)(int, int) = & max; // &可以省略    int a, b, c, d;    printf("please input 3 numbers:");    scanf("%d %d %d", & a, & b, & c);    /* 與直接呼叫函式等價,d = max(max(a, b), c) */    d = p(p(a, b), c);     printf("the maxumum number is: %d\n", d);    return 0;}


相关

  • 排异反应移植排斥(英语:transplant rejection)是器官移植后的器官并不被受移植者身体接受的情况。一般来说这是因为免疫系统将移植器官视为异物,如同攻击病毒或细菌一样攻击移植器官所引
  • 詹姆斯五世詹姆斯五世(James V of Scotland)(1512年4月10日-1542年12月14日),苏格兰斯图亚特王朝第七任君主,詹姆斯四世与妻子英格兰国王亨利七世之长女玛格丽特·都铎之子,1513年至1542年在
  • 雷诺氏症雷诺氏综合征(英语:Raynaud syndrome),也作雷诺现象(Raynaud phenomenon),是指由于血管痉挛(英语:vasospasm)而引起的一系列血管血流减少的情形。一般手指更容易受到影响,脚趾有时也会
  • 希腊法拉沛咖啡希腊法拉沛咖啡(Frappé coffee)是一种冰咖啡,咖啡的上面覆盖着奶泡,有时还会加入冰块,适合在夏季饮用。
  • 铀铅定年法铀铅测年法是放射测年法中最早使用且准确度最高的测年方式,可测定距今100万年到45亿年的物体年代,例定精确度大约是测定范围的1%至10%。铀铅测年法依赖两个独立的衰变链,即半衰
  • 深圳大学附属医院深圳大学总医院,定位为一所集临床医疗、教研教学、健康管理、康复保健为一体的国际化、数字化三级甲等创新性研究型综合医院,直接隶属于深圳大学。位于深圳市南山区的深圳大学
  • 隐形人《看不见的人》(英语:Invisible Man,或译《隐形人》)是拉尔夫·艾里森的小说,于1952年由兰登书屋出版。小说探究了二十世纪早年非裔美国人所遇到的一些社会、知识问题,包括非裔
  • 麦克斯·施蒂纳麦克斯‧施蒂纳(Max Stirner,1806年10月25日-1856年6月26日),本名是约翰‧卡斯帕‧施密特(Johann Kaspar Schmidt)。比他本名更有名之笔名,乃源自于他小时候的额头很高,在学校被同学
  • 强迫行为强迫行为(英语:Compulsive behavior),又称作态行为,是一种重复与持续的行为,当事人无法由这种行为中获得益处或满足感,但难以停止去做这种行为的内在冲动。这类行为在一般人的身上
  • 前273年