函数指针

✍ dations ◷ 2025-12-04 14:35:44 #计算机技术

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


相关

  • 厨余垃圾生物降解垃圾(Biodegradable waste,又译生物分解废弃物)包含所有能借由堆肥、好氧消化(英语:Aerobic digestion)、厌氧消化等生物降解过程,被生命体(如微生物)分解成二氧化碳、水、甲
  • 利奥波德·莫扎特约翰·格奥尔格·利奥波德·莫扎特(德语:Johann Georg Leopold Mozart,1719年11月14日-1787年5月28日),出生于神圣罗马帝国奥格斯堡帝国自由城市(今德国),在神圣罗马帝国奥地利大公国
  • 十一抽杀律十一抽杀律(英语:Decimation;拉丁语:Decimatio,decem的意思是“十”)是罗马军队中,对叛乱或者大规模临阵脱逃的部队施以集体惩罚的一种手段。采用十一抽杀律的目的是为了消除部队中
  • 西柯汶纳西柯汶纳 (West Covina, California)是美国加利福尼亚州南部洛杉矶县的一座城市,位于洛杉矶市以东,主要为住宅区。2000年人口96,086人。
  • 拉脱维亚SSR拉脱维亚苏维埃社会主义共和国(拉脱维亚语:Latvijas Padomju Sociālistiskā Republika,俄语:Латвийская Советская Социалистическая Р
  • 内布拉斯加-林肯大学内布拉斯加大学林肯分校(University of Nebraska–Lincoln,简称UNL、NU,又译内布拉斯加-林肯大学)于1869年根据《土地拨赠法案》创建。是内布拉斯加大学的最主要成员及最早的分
  • +7UTC+7时区包含以下区域:时区名称ICT(Indochina Time:中南半岛时间)
  • 非传递博弈非传递博弈是一个通过多种策略得到一个或者更多“循环”选择的博弈。在非传递博弈中,如果策略A优于策略B,策略B优于策略C,并推导出策略A优于策略C。非传递博弈的雏形是剪刀、石
  • 1900年夏季奥林匹克运动会第二届夏季奥林匹克运动会(英语:the Games of the II Olympiad,法语:les Jeux de la IIe Olympiade),是一场于1900年在法国巴黎举行的国际综合体育赛事。这次奥运会没有开幕式和闭
  • 张书伟第15届金曲奖“最佳重唱组合”入围张书伟(1980年11月4日-),台湾知名男演员,曾为台湾男子团体Energy的团长与主唱,至今发行8张音乐专辑,曾主持过数个节目,目前演出多档戏剧。2004年以