函数指针

✍ dations ◷ 2025-12-01 23:32:37 #计算机技术

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


相关

  • 外寄生虫感染外寄生物感染是指主要由外寄生物引起的寄生虫病。外寄生物即暂时或永久寄生于宿主体表的寄生物。例如:治疗外寄生物感染常使用杀外寄生虫药(英语:ectoparasiticide),以杀死外寄生
  • 真细菌放线菌门 Actinobacteria(高G+C) 厚壁菌门 Firmicutes(低G+C) 无壁菌门 (无细胞壁)产水菌门 Aquificae 异常球菌-栖热菌门 Deinococcus-Thermus 纤维杆菌门-绿菌门/拟杆菌门 Fibro
  • X射线晶体学X射线晶体学是一门利用X射线来研究晶体中原子排列的学科。更准确地说,利用电子对X射线的散射作用,X射线晶体学可以获得晶体中电子密度的分布情况,再从中分析获得关于原子位置和
  • 假色假色是指在一幅影像中使用与全彩不同的颜色描述一项物体。全彩是指影像中的物体颜色和人类肉眼所见的颜色非常相似。在黑白影像中全彩则是指物体的明亮程度。但因为颜色染料
  • 双壳纲双壳纲(学名:Bivalvia),又名斧足纲或瓣鳃纲,是软体动物门的一个纲,生于海洋及淡水地区因有两片贝壳而得名。现存有9200种左右,体长达135厘米。本纲动物的头部已经退化,足部呈斧状,体
  • 皮埃尔-西蒙·拉普拉斯皮埃尔-西蒙·拉普拉斯侯爵(法语:Pierre-Simon marquis de Laplace,1749年3月23日-1827年3月5日),法国著名的天文学家和数学家,他的工作对天体力学和统计学有举足轻重的发展。1749
  • 瓦尔那瓦尔那(梵语:वर्ण,转写:Varṇa)是印度教经典中解释种姓制度的概念,其内涵主要见于《摩奴法典》与《瞿昙法经》等早期婆罗门教经典。在该制度中主要指四种不同的阶层,经典中根据
  • 丙烯酸丙烯酸,又称压克力酸,是化学式为C3H4O2的有机化合物,是最简单的不饱和羧酸,由一个乙烯基和一个羧基组成。纯的丙烯酸是无色澄清液体,带有特征的刺激性气味。它可与水、醇、醚和氯
  • 铅化合物铅化合物是含铅元素的化合物,在这些化合物中,铅主要呈现+2和+4价,其中+2价更稳定。无机的四价铅化合物是强氧化剂。铅的含氧酸盐大都是无色或白色的,低价氧化物和碘化物有着鲜艳
  • 我心狂野《我心狂野》(Wild at Heart)是1990年的美国黑色幽默爱情犯罪片,由大卫·林奇担任编剧及导演,由尼古拉斯·凯奇、劳拉·邓恩、黛安·拉德、威廉·达佛、哈里·迪恩·斯坦顿及伊