函数指针

✍ dations ◷ 2025-11-30 21:21:15 #计算机技术

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


相关

  • 西北部美国西北部包括从美国西北直至大平原的地区,包括俄勒冈州、华盛顿州,可能包括爱达荷州、蒙大拿州、阿拉斯加州东南,有时也可能包括怀俄明州;偶尔北加利福尼亚州也包括在内。西北
  • 幼虫幼体或称幼生是指两栖类、昆虫、刺丝胞动物在变态为蛹或成体之前的状态。例如:蝌蚪、面包虫、毛虫。根据不同的变态模式,昆虫幼体亦被冠以不同称呼,如:幼虫(完全变态)如蝴蝶、蜜蜂
  • 欧亚经济联盟欧亚经济联盟(ЕАЭС),亦称为欧亚联盟(EEU),是一个由俄罗斯、白俄罗斯、哈萨克斯坦、吉尔吉斯斯坦、亚美尼亚5个前苏联国家为加深经济、政治合作而组建的国际组织。2011年10月,该
  • 谢尔盖·邦达尔丘克谢尔盖·费奥多罗维奇·邦达尔丘克(俄语:Серге́й Фёдорович Бондарчук,乌克兰语:Сергій Федорович Бондарчук,1920年9月25日-1
  • 可维尔可维尔国家森林(英语:Colville National Forest),也作科尔维尔国家森林,是美国的一处国家森林,1907年3月1日建立,位处华盛顿州,占地面积954,409英亩(3,862.36平方千米),最近的城市为科
  • 高铁酸盐高铁酸盐中的高铁酸根是一种无机阴离子,化学式2-。它对光敏感,使得化合物和溶解有它的溶液呈淡紫色。其为已知最强的对水稳定的氧化物质之一。尽管它被归为弱碱,高铁酸盐浓溶液
  • 美国网球公开赛美国网球公开赛(英语:US Open)是每年度第四项也是最后一项网球大满贯公开赛,通常在8月底至9月初举行,赛事共分为男子单打、女子单打、男子双打、女子双打和男女混合双打五项,并且
  • 阿尤布王朝阿尤布王朝(Ayyubid dynasty)为12世纪-13世纪统治埃及、叙利亚、也门的伊斯兰教王国。该王朝由库尔德人建立,全盛时期的版图延伸至圣城麦加与北伊拉克。由阿尤布、谢尔库赫兄弟
  • 卷舌鼻搭嘴音卷舌鼻搭嘴音(Retroflex nasal click)是一种罕见的辅音。国际音标并未指派给此音任何符号,因此实务上通常使用道格拉斯·马丁·比奇(Douglas Martyn Beach)首先提出的符号⟨ᶢ‼
  • 天才王子的赤字国家振兴术《天才王子的赤字国家振兴术》(日语:天才王子の赤字国家再生術〜そうだ、売国しよう〜)是一部由鸟羽彻创作的小说,插画由ファルまろ负责。小说由SB Creative(日语:SBクリエイティ