函数指针

✍ dations ◷ 2025-10-22 08:35:52 #计算机技术

函数指针是一种在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;}


相关

  • 乐毅乐毅(?-?),燕国著名军事家,辅佐燕昭王,曾攻下齐国70余城而封昌国君,后获赵国封望诸君。与管仲齐名,是东周战国时期法家重要代表人物之一。魏国名将乐羊后代。乐羊葬于中山国灵寿(属今河
  • 美司钠美司钠(INN:Mesna,发音: /ˈmɛznə/),又名巯乙磺酸钠,是一种主要用于辅助环磷酰胺和异环磷酰胺化疗的有机硫化合物。它由百特国际以Uromitexan和Mesnex作为商品名销售。它的英文名
  • 中欧关系中华人民共和国和欧洲联盟的外交关系建立于1975年。中欧关系一个争议的焦点便是欧盟对中国武器禁运。中欧关系始于1985年中欧“贸易与合作协议”。从2007年起,双方开始谈判提
  • 特命全权大使特命全权大使,简称大使,是一国元首向驻在国元首派遣的等级最高的外交代表,在驻在国有代表本国国家元首和政府向驻在国表达意见或者同驻在国达成协议的全权,享有完全的外交特权和
  • 等容过程等容过程(也叫等体过程)是体积不变的热力学过程。如果使用理想气体,且气体的质量不变,则能量的增加与温度和体积的增加成正比。例如加热密封、坚固容器中的气体:压强和温度会增加
  • 的黎波里的黎波里(Tripoli),是黎巴嫩地中海岸边的一座古城,位于贝鲁特以北85公里。该城名称意为“三城”,由于在腓尼基时代的三座城市(西顿、推罗和阿拉多斯)联盟中占主导地位而得名。的黎
  • 海底生物界海底生物界是与水域基底相连的生活区域,可分为滨海海底生物界(光线可透射的,夏季温暖的水域底层)和深海海底生物界(暗的,冷的水域底层)。在海底生物界栖息的生物被称为海底生物。
  • 渐伸线渐伸线(involute)(或称渐开线(evolvent))和渐屈线(evolute)是曲线的微分几何上互为表里的概念。若曲线A是曲线B的渐伸线,曲线B是曲线A的渐屈线。在曲线上选一定点。有一动点由出
  • 文德路文德路是广州市的一条呈南北走向的道路。该路是广州历史悠久的文化街,与北京琉璃厂、上海城隍庙和南京夫子庙齐名,沿路历来有古玩文物、古籍字画、陶瓷、字画装裱等商店。顺序
  • 马克·安东尼·克里提库斯马克·安东尼·克里提库斯(拉丁语:Marcus Antonius Creticus)为公元前1世纪一位罗马政治家,安东尼家族成员。他是马克·安东尼·奥雷托尔之子,妻子为朱莉娅·安东尼(英语:Julia Ant