函数指针

✍ dations ◷ 2025-11-24 09:36:03 #计算机技术

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


相关

  • 长波在电台中,长波 (英文:Longwave)是指无线电频谱与相对较长的波长。这个词语的历史可以追溯到20世纪初,当时无线电频谱被视为包括长期、中期和短期波长。大多数现代无线电系统和
  • 运河运河是指人工开凿的规模比较大的、可以使水流流过的运输通道。运河通常连接湖泊、河流和海洋,或横贯半岛、地峡而造。相传在四千年前美索不达米亚已有开运河,但具体难以考证。
  • 卡酥来砂锅卡酥来砂锅(英语:Cassoulet)是英法百年战争时发明,为了慰劳前线的士兵。这道菜由卡酥来(Cassoulet)这种陶土制的食器熬煮而成,其中烹调的时间非常费时。它的主要食材有油封鸭或羊肉
  • 水通道蛋白水通道蛋白(Aquaporin),又名水孔蛋白,是一种位于细胞膜上的蛋白质(内在膜蛋白),在细胞膜上组成“孔道”,可控制水在细胞的进出,就像是“细胞的泵”一样。水通道是由约翰霍普金斯大学
  • 渔港渔港是指具有渔业功能、停泊渔船的港口,例如:捕鱼,又有分近海和远洋两种渔港。一般的大型渔港(第一类渔港)一般设有鱼市场、起卸码头,以及渔船补给(加油、加水、加冰)、鱼货加工、冷
  • 吡咯啉吡咯啉(Pyrroline),又称二氢吡咯,是五元的部分不饱和含氮杂环化合物的统称,它包括以下三个异构体:1-吡咯啉为一个环状的亚胺。2-吡咯啉为环状的烯胺。3-吡咯啉为环状的不饱和胺。
  • 太医局太医局为中国古代的医疗机构。太医局在秦朝、汉朝时归于少府所管辖,至晋朝时属于宗正所管,而八王之乱后,晋政府南迁,太医局则转为由门下省统领,到了北齐时又于太常之下。 最后在
  • 西宁西宁市(藏语:.mw-parser-output .uchen{font-family:"Qomolangma-Dunhuang","Qomolangma-Uchen Sarchen","Qomolangma-Uchen Sarchung","Qomolangma-Uchen Suring","Qomolangm
  • 塞内卡语塞内卡语(自称Onödowága或Onötowáka)是塞内卡人的民族语。塞内卡语有不同的书写方式,这里所用的是塞内卡双语教学计划采用的正写法。塞内卡语有3个塞音: /t/、/k/和.mw-pars
  • 猪八戒猪八戒,原名猪刚鬣,法号悟能,是中国古典小说《西游记》当中唐僧的四个徒弟之一,排行第二,猪脸人身,黑猪模样。孙悟空常呼其为“呆子”。朱士行(203—282),三国时代高僧,法号八戒。嘉平