函数指针

✍ dations ◷ 2025-11-28 11:55: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;}


相关

  • 粒细胞粒细胞是一类细胞质中包含颗粒体(英语:Granule_(cell biology))的白细胞,又因其细胞核形态多样而称多形核白细胞,(PMN或PML)。术语多形核白细胞通常特指最常见的中性粒细胞。粒细胞
  • 晶体管晶体管(英语:transistor),早期音译为穿细丝体,是一种类似于阀门的固体半导体器件,可以用于放大、开关、稳压、信号调制和许多其他功能。在1947年,由约翰·巴丁、沃尔特·布喇顿和威
  • 亚精胺像是亚精胺这样的多胺,为聚阳离子脂肪胺且含有许多功能。对于细胞的存活有重要的影响。亚精胺会同步一些生物的过程(像是Ca2+, Na+, K+ -ATPase),也可以保持膜电位并控制细胞
  • 智商智能商数(德语:Intelligenzquotient),简称智商(德语:IQ),是用智力测试测量人在其年龄段的认知能力(“智力”)的得分。人的智商呈正态分布,目前主要的智力测验(包含最常被使用的“韦克斯
  • 草莓状宫颈草莓状宫颈(strawberry cervix),是指一类身体检查中发现子宫颈中有小点和乳头状成像。它的命名也是因为其成像和草莓外表类似。和子宫颈炎中检查到更多发炎情况不同,草莓状宫颈
  • 三白眼三白眼是指眼睛的虹膜部分比较小,眼白的面积比较大,所以眼球的虹膜除了左右两侧有眼白之外,上方或下方也露出眼白。虹膜偏上者(即露出下眼白)称为下三白,反之称为上三白,不过上三白
  • 普桑主义普桑派是十八世纪法国画家,强调线条比色彩重要。普桑指的是法国17世纪画家尼古拉·普桑推崇他研究文艺复兴时间绘画的专注。而与之相反的是鲁本斯派,他们认为色彩更重要。鲁本
  • 市町村合并市町村合并(日语:日本の市町村の廃置分合/にほんのしちょうそんのはいちぶんごう Nihon no shichōson no haichi bunkō)包括了日本市町村的分割、分立、合并、编入等。地方自
  • 微山县微山县是位于山东省济宁市的一个县,因微山湖而得名。微山县位于山东省南部偏西,地处东经116°34′~117°24′,北纬34°26′~35°20′。微山县南边与江苏省徐州市相邻,北边与邹城市
  • 软件后门{{NoteTA|G1 = IT}}软件后门指绕过软件的安全性控制,从比较隐秘的通道获取对程序或系统访问权的黑客方法。在软件开发时,设置后门可以方便修改和测试程序中的缺陷。但如果后门