函数指针

✍ dations ◷ 2025-10-17 07:40:43 #计算机技术

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


相关

  • 笔名笔名是有些作家发表文章时,基于某种理由不以真实姓名发表而采用的化名。各个作家都有不同使用笔名的原因。可能包含但不限于:某些有取笔名动机的作家,尤其认为本名庸俗者,通常会
  • 僧院僧院是一种宗教机构,是供出家修行者修行、生活的地方,在许多宗教中均有此机构。追溯基督教的隐居修道的传统,甚至可以上溯至犹太教的爱色尼派。2世纪-3世纪,有一些隐修士(如俄利
  • 中枢神经系统疾患中枢神经系统疾病,是指影响中枢神经系统内的人脑或脊髓结构或功能的神经系统疾病。每种疾病都有不同的体征和症状如持续性头痛;面部,背部,手臂或腿部疼痛;无法集中注意力;失去感觉
  • 客家人本文属于客家系列的一部分台湾客家人,是指具有汉族客家民系认同的台湾人,为台湾第二大族群。其母语为台湾客家话,历经早期、明郑时期、清治时期皆能通行于台湾的客家地区,在日治
  • 李查维尼波罗国(尼泊尔语:लिच्छवी वंश,转写:Licchavī vanśa,直译“离车毗王朝”)是尼泊尔第一个有明文记录王朝,从约公元400年存续至750年,由离车族(英语:Licchavi (clan))(Liccha
  • 素叻他尼府坐标:9°8′0″N 99°19′54″E / 9.13333°N 99.33167°E / 9.13333; 99.33167素叻他尼府(泰语:จังหวัดสุราษฎร์ธานี,皇家转写:Changwat Suratthani,泰语发音
  • 阿根廷历史阿根廷历史一般可以分为四个主要部分:前哥伦布时期或早期历史(至16世纪),殖民时期(1530年至1810年),国家建设时期(1810至1880年)和现代阿根廷历史(约1880年至今)。16世纪前居住着约30万
  • 市占率市场占有率,也可称作市场份额,是企业战略管理和营销学中的一个重要概念。其定义为某一时间,某一个公司的产品(或某一种产品),在同类产品市场销售中占的比例或百分比。市场占有率可
  • 汶上县汶上县是中国山东省济宁市所辖的一个县,西邻京杭大运河。汶上县辖11个镇和3个乡:中都街道、汶上街道、南站镇、南旺镇、次丘镇、寅寺镇、郭楼镇、康驿镇、苑庄镇、义桥镇、郭
  • 足球员足球员,在英语中也称footballer或soccer player是一个运动员,包含各种不同的足球。主要形式有足球、美式足球、加拿大式足球、澳式足球、盖尔式足球、联盟式橄榄球和橄榄球。