语句float (*p)(int,int)的作用是什么?

如题所述

声明了一个函数指针p,p指向一个函数,该函数的参数是两个int,返回值是float类型。

函数指针通常用于将函数作为参数传递给另一个函数,或者将函数当类类型来特例化模板(C++)。

比如以下代码:

#include <stddef.h> // C++换成 #include <cstddef>
#include <stdio.h>  // C++换成 #include <cstdio>

/* 定义F是一个函数指针类型的别名 
 * 该类型对应的函数接受一个int指针作为形参,返回void */
typedef void(*F)(int*); 

void f(int *a) {++(*a);} // 将a指向的int增加1

/* 对数组a中每个元素都执行f */
void process_F(int *a, size_t n, F f)
{
    for (int i = 0; i < n; ++i) 
        f(&a[i]);         // 可以像函数一样使用函数指针
}

int main()
{

    int a[3] = {0, 1, 2};
    process_F(a, 3, f);   // 将数组中每个数都增加1
    printf("%d, %d, %d", a[0], a[1], a[2]); //"1, 2, 3"
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-21
int
*p(float
,int
)
指针函数,本质是函数,返回值是指向int型数据的指针
int
(*p)(float
,
int
)
函数指针,本质是指针,指针指向的是一个返回值为int型的函数
int
*(*p)(float
,
float)函数指针,本质是指针,指针指向的是一个返回值为指针的函数
第2个回答  推荐于2016-08-10
指向函数的指针
比如你写了一个两个数比较大小的函数max(Int x,int y)
int a,b,c;
p=max; //把max函数的首地址给了指针P;
c=(*p)(a,b); //和c=max(a,b);等价
作用是:增加了函数的灵活性。可以编写一个通用的函数来实现各种专用的功能追问

为什么是(int,int),而不是(int x,int y)呢?

追答

指向函数的指针变量--p 含有两个整形参数,函数值为整形

本回答被提问者和网友采纳
第3个回答  2013-01-11
(int x,int y)中,x,y只是int型变量的名称,可以写成其他的,都可以阿,如(int a,int b)等(int,int)是说明,变量的类型是int
相似回答