函数指针

✍ dations ◷ 2025-02-24 05:20:49 #计算机技术

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


相关

  • 北大西洋大西洋(西班牙语:Océano Atlántico,葡萄牙语:Oceano Atlântico,英语:Atlantic Ocean),是世界第二大洋。原面积8221万7千平方公里,在南冰洋确立后,面积调整为7676万2千平方公里。平
  • 化学发光化学发光,是化学反应过程中释放出来的能量激发发光物质所产生的冷发光现象。以反应物A和B为例,如果存在处于激发态的反应中间体◊,那么:再例如,如果是鲁米诺,而是过氧化氢,那么在适
  • 维尔纳叶法伐诺伊焰熔法(Verneuil process),又称为火焰合成法,是由法国化学家奥古斯德·维多·路易·伐诺伊所发明史上第一种取得商业成功的合成宝石制造法。伐诺伊焰熔法最主要是用来生产
  • 大红斑大红斑(英语:Great Red Spot,缩写简称GRS)是一个在木星赤道以南22°存在很久的巨大反气旋风暴。自1830年开始,已经被持续观测了189年。但在1665年-1713年间已有观察的纪录,也有可
  • 军咨府参谋部或称参谋本部,为现代军队中提供人事行政、军事情报、军事训练、后勤补给、政战与计划的幕僚部门。十八世纪晚期以前,上述功能全部由军队统帅管理,但法国大革命后出现征兵
  • 冬葵子磨盘草(学名:Abutilon indicum),为锦葵科苘麻属下的一个植物种。
  • 五面体在几何学中,五面体是指由五个面组成的多面体。没有任何五面体是正五面体,也就是说找不到面由正多边形组成且每个面全等、每个角相等的正五面体,但若放宽限制,不考虑是否所有面全
  • 英格兰足总杯足球协会挑战杯(英语:Football Association Challenge Cup),简称足总杯(FA Cup),是由英格兰足球总会命名并主办的一项男子淘汰制足球杯赛。英格兰足总杯是世界上历史最悠久的足球比
  • 克里克里县(Creek County, Oklahoma)是美国奥克拉荷马州东部的一个县。面积2,512平方公里。根据美国2000年人口普查,共有人口67,367人。县治萨帕尔帕 (Sapulpa)。成立于1907年11月1
  • 根特根特(荷兰语:Gent,pronounced .mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Gentium","