函数指针

✍ dations ◷ 2025-11-23 13:11:19 #计算机技术

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


相关

  • 棘红细胞棘红细胞(英语:Acanthocyte、spur cell,字源來自希臘文acantha,意為「刺」)是细胞膜有针状突起的异常红血球。棘红细胞外表粗糙而不规则,且具有许多星状的圆锯齿突起。可在无β脂
  • 阿尔基罗库斯卡尔基罗库斯(英语:Archilochus),(前680年-前645年)。古希腊最早的抒情诗人。与荷马齐名。他曾参与殖民萨索斯的相关活动,后于此阵亡。他因为女儿内奥布勒的出嫁一事与吕坎拜斯发生
  • 惠更斯克里斯蒂安·惠更斯(荷兰语:Christiaan Huygens,1629年4月14日-1695年7月8日),荷兰物理学家、天文学家和数学家,土卫六的发现者。他还发现了猎户座大星云和土星光环。惠更斯于1629
  • 核浩劫核浩劫或核子末日是大规模核战争及核辐射导致的一种世界末日。在这种情况下,核冬天发生,世界上大多数的城市会被摧毁,很多人类科技已不能再使用,而地表也变得难以居住。冷战早期
  • 杜若杜若(学名:Pollia japonica)是鸭跖草科杜若属的植物。多年生草本,根状茎长而横走;茎直立,被有柔毛;叶子无柄,长椭圆形叶片,叶鞘无毛;夏季开白色花,蝎尾状聚伞花序集成圆锥花序;蓝黑色球
  • 远东共和国远东共和国(俄语:Дальневосточная Республика,ДВР)是苏维埃俄罗斯政府在俄国远东和西伯利亚贝加尔湖以东地区建立的一个共和国。于1920年4月6日成
  • 血色素沉着症血色沉着病(Hemochromatosis),又名血色素沉着症、血铁沉积症或血色病是指:
  • 国立北平大学国立北平大学,是民国时期将数所北平(今北京市)附近的高等学校合并而成的大学,并非北京大学。1927年,北洋政府因为连年军阀混战,国库空虚,且因为各大学科系重复设置,资源重复浪费,下令
  • 蒸湘区蒸湘区为湖南省衡阳市市辖区,该区位于衡阳市城区西部,东起蒸湘南北路,西至衡阳县樟树乡和衡南县三塘镇,南接雁峰区岳屏镇和衡南县车江镇,北连蒸水及石鼓区角山乡。辖域总面积101
  • 2011年屈塔希亚地震 除特别注明外,本文所有时间均以中时区时间(UTC±0)为准。5.8 Mw(USGS) 5.7 Mw(ERDTDMA)2011年屈塔希亚地震(土耳其语:Kütahya depremi)发生于2011年5月19日20时15分24秒左右,震中位