函数指针

✍ dations ◷ 2025-12-07 05:35:33 #计算机技术

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


相关

  • 物理治疗人体解剖学 - 人体生理学 组织学 - 胚胎学 人体寄生虫学 - 免疫学 病理学 - 病理生理学 细胞学 - 营养学 流行病学 - 药理学 - 毒理学物理治疗(英语:physical therapy,或作phy
  • 显生宙显生宙(Phanerozoic),或称显生元、显生代,是5.41亿年前大量生物出现的时期。显生宙即意为这个时期地球上有显著的生物出现。而那些看不到或者很难见到生物的时代统称为隐生元或
  • 比部,为汉字索引中的部首之一,康熙字典214个部首中的第八十一个(四划的则为第二十一个)。就繁体和简体中文中,比部归于四划部首。比部通常是从上、下、右方均可为部字。且无其他
  • 灵长总目灵长总目(学名:Euarchontoglires)是胎盘类哺乳动物中的一个总目,基于分子基因序列分析和逆转位子存在/消失的资料,以啮形大目(啮齿目和兔形目)和真灵长大目(树鼩目、灵长目和皮翼目)
  • Mg(Csub6/subHsub5/sub)sub2/sub二苯基镁是一种金属有机化合物,化学式为Mg(C6H5)2,它在标准状况下是无色固体。它可由镁和二苯基汞反应得到。它和二甲基镁有如下可逆反应:而和氯化镁之间的可逆反应,在乙醚溶剂
  • 施瓦本汝拉山坐标:48°18′N 9°21′E / 48.3°N 9.35°E / 48.3; 9.35施瓦本汝拉山(德语:Schwäbische Alb、Schwäbischer Jura 或 Schwabenalb;英语:Swabian Jura;法语:Jura souabe)是德国的
  • 咸水湖咸水湖,或盐湖、盐水湖,是指以咸水形式积存在地表上的湖泊,一般湖水盐度大于3.5 %(海水)。由于水少有流出,蒸发量大,因而含盐量高,故名。多数位于内流河的末端。中国境内的咸水湖有
  • 驻外使馆警卫队海军陆战队使馆警卫队(英语:Marine Corps Embassy Security Group),前称海军陆战队卫兵营(Marine Security Guard Battalion),是美国海军陆战队一支营级的部队,负责美国驻外大使馆、
  • 鸡公山坐标:31°47′58″N 114°05′00″E / 31.79944°N 114.08333°E / 31.79944; 114.08333鸡公山属大别山支脉,地处河南省、湖北省两省交界处。主峰“鸡公头”又名“报晓峰”,海
  • 状告上帝状告上帝(英语:Lawsuits against God)在现实中和虚构中都曾出现过。而这种控告往往涉及到罪恶问题和不可抗力。在美国的内布拉斯加州,州参议员厄尼·钱伯斯(Ernie Chambers)起诉上