函数指针

✍ dations ◷ 2025-05-19 19:31:24 #计算机技术

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


相关

  • 暴风雪系列暴风雪航天飞机计划(俄语:Бура́н,罗马转写:Buran)是一个存在于前苏联时代的可重复使用航天器计划。计划始于1976年,由当时苏联的中央空气动力学研究所(ЦАГИ;TsAGI)负责,以回
  • 俄勒冈健康与科学大学俄勒冈健康与科学大学(英语:Oregon Health & Science University,简称OHSU),又称为俄勒冈医科大学,创建于1887年,位于美国西海岸的俄勒冈州,主校区坐落在该州最大城市波特兰市中心以
  • 超个体超个体(英语:superorganism,又称超有机体)是一个由许多有机体组成的有机体系。这通常意味着是一个真社会性动物的社会单位,在那里社会分工被高度专业化,且个体无法独自长时间地生
  • 花烟草花烟草(Nicotiana × sanderi)为茄科烟草属下的一个园艺杂交种,亲本为翼柄烟草和红花烟草。
  • 申师任堂申师任堂(朝鲜语:신사임당,1504年10月29日-1551年5月17日),朝鲜国中期的女性书画家、作家、儒学者和诗人。儒学者李栗谷的母亲。字仁善、号师任堂、思任堂、师妊堂、妊师斋、任堂
  • 爱沙尼亚共和国– 欧洲(绿色及灰色)– 欧盟(绿色)  —爱沙尼亚共和国(爱沙尼亚语:Eesti Vabariik),通称爱沙尼亚(爱沙尼亚语:Eesti,爱沙尼亚语发音: .mw-parser-output .IPA{font-family:"Charis S
  • 阳光16法则阳光16法则(也称阳光16定律)是摄影术中不借助电子测光表来估计照相机的光圈大小和快门长短的法则。阳光16的基本法则如下:在室外阳光下,如果光圈是 f/16,则快门速度应是所用胶片
  • 科尔沁部科尔沁部(蒙古语:.mw-parser-output .font-mong{font-family:"Menk Hawang Tig","Menk Qagan Tig","Menk Garqag Tig","Menk Har_a Tig","Menk Scnin Tig","Oyun Gurban Ulus
  • 波托马克河波托马克河(英语:Potomac River),是美国东部的主要河流之一,全美第21大河流。波托马克河有两个源头,北源发源于西弗吉尼亚州普雷斯顿县、格兰特县和塔克县交界处,南源发源于弗吉尼
  • 合成大麻素合成大麻素(英语:)或人工合成大麻类受体激动剂,是多种非大麻植物制作的合成化学毒品。该化学物质与在大麻植物中发现的大麻素不同,但也可与大麻素受体结合。其以不同香料和药草,混