函数指针

1.定义一个无参数无返回值的函数指针

/*
 这是一个函数指针
能够指向一个返回值类型为void无形数的函数
*/
{
void (*p)(void); 
}
  • (*p):是固定写法,代表指针变量将来肯定指向函数的
  • 左边void:指针变量p指向没有返回值的函数
  • 右边void:指针变量指向没有形参的函数

其他类型的指针函数

1. int (*p)(void); // 无形参有返回值的
2. void (*p)(int a);// 有形参无返回值的
3. int (*p)(int a);// 有形参无返回值的

事例一:

  • 使用函数指针变量指向函数并进行调用

#include <stdio.h>

int sum(int a, int b)
{
    return (a + b);
}

int main(void)
{
    // 定义一个函数指针,返回类型int,两整型形参
    int (*p)(int x, int y);

    // 使用函数指针变量指向函数
    p = sum;

    // 进行调用函数
    int temp = p(2, 3);

    // 输出结果
    printf("temp = %d", temp);

    // 控制台打印信息
    // temp = 5

    return 0;
}

事例二:

  • 函数指针变量作为函数形参

#include <stdio.h>

// 此函数第一个参数是函数指针
int function( int(*p)(int x, int y),  int a, int b)
{
    return p(a, b);
}

// 此函数是一般的函数,功能求和
int sum(int a, int b)
{
    return (a + b);
}

// 此函数是一般的函数,功能求差
int differ(int a, int b)
{
    return (a - b);
}

int main(void)
{
    // 1. 将求和函数作为实参代入函数function中
    int tempSum = function(sum, 2, 3);
    printf("tempSum = %d\n", tempSum);
    // 控制台打印结果:
    // tempSum = 5
   

    // 2. 将求差函数作为形参代入函数function中
    int tempDiffer = function(differ, 2, 3);
    printf("tempDiffer = %d\n", tempDiffer);
    // 控制台打印结果
    // tempDiffer = -1

    return 0;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容