函数指针

✍ dations ◷ 2025-12-11 00:04:58 #计算机技术

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


相关

  • 法拉语法拉语(Fala)是罗曼语族的一门语言,通常被认为是葡萄牙-加利西亚语的下属语言之一。法拉语在西班牙埃斯特雷马杜拉靠近葡萄牙国界的部分地区使用,使用人口约有10,500人。2015年,
  • 路易斯安那路易斯安那州(法语:État de la Louisiane; 英语:State of Louisiana),简称路州,是美国的一个州,位于墨西哥湾沿岸。此州以对比强烈的文化、地理景观著名。如嘉年华会的狂欢和荒野
  • 蛋白质定量布拉德福蛋白质定量法(Bradford protein assay)(中文名称为“考马斯亮兰法”)为一种利用光谱学技术分析溶液中蛋白质浓度的技术。本定量法会受待测氨基酸序列影响,此方法为Marion
  • LGLG集团(韩语:LG그룹;英语:LG Corporation),旧名乐喜金星(韩语:럭키금성;英语:Lucky-GoldStar,简称乐金、LG),是一家总部位于韩国首尔的跨国企业集团,主要经营范围包括电子与通信技术、家电
  • 中国外汇储备中华人民共和国外汇储备的主要组成部分是美元资产,其主要持有形式是美国国债和机构债券。2006年2月底中华人民共和国的外汇储备总额为8,536.72亿美元(不包括港澳的外汇储备),首
  • 西湖十景西湖十景指分布在杭州西湖周围的十个有代表性的景点。通常是指苏堤春晓、曲院风荷、平湖秋月、断桥残雪、花港观鱼、南屏晚钟、双峰插云、雷峰夕照、三潭印月以及柳浪闻莺这
  • 亩是东亚的传统土地面积单位。在中国大陆,亩也是1959年公布《中华人民共和国法定计量单位使用方法》中,停止使用市制后唯一保留的面积单位。现在市制定一亩等于六十平方丈,约等
  • 联邦联赛联邦联赛(德语:Bundesliga)是指国家主要体育比赛,用于德国、奥地利和瑞士,通常是各项体育项目的顶级比赛。就一般而言,Bundesliga这词是用于德国足球甲级联赛。以下列表只会列出有
  • 前557年
  • 加密在密码学中,加密(英语:Encryption)是将明文信息改变为难以读取的密文内容,使之不可读的过程。只有拥有解密方法的对象,经由解密过程,才能将密文还原为正常可读的内容。虽然加密作为