阅读笔记:C语言函数指针

@李彪  July 23, 2018

1.指向函数的指针

1.1什么是指针函数

1.2 怎样定义指向函数的指针变量

定义指向函数的指针变量一般形式为:

例如 int (*p)(int a, int b); 这里的 “类型名” 是指函数返回值的类型。

1.2.1说明

  1. 定义指向函数的指针变量,并不意味着这个指针变量可以指向任何函数,它只能指向在定义时指定的类型的函数。在同一个程序中,一个指针变量可以先后指向同类型的不同函数。
  2. 在给指针变量赋值时,只需给出函数名,而不需要给出参数,如果带上参数,会让编译器误认为正在调用函数。
  3. 对指向函数的指针变量不能进行加减运算、因为这些云端是没有意义的。
  4. 通过函数名,只能调用一个函数,而通过函数指针变量,便可以实现动态调用不同的函数。

1.3 使用函数指针调用函数

如果想调用一个函数,除了使用函数名进行调用之外,还可以使用指向此函数的函数指针变量进行调用,简单样例如下。

#include <stdio.h>

int main() {
    int (*p)(int a, int b);
    int add(int a, int b);  //函数声明
    p = add;  //函数指针变量赋值 or p = &add;
    int a = 100, b = 200;
    int c = (*p)(a, b);  //函数指针调用
    printf("%d\n", c);

    return 0;
}

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

1.4 用指向函数的指针作为函数参数

指向函数的指针变量的一个重要用途就是把函数的地址作为参数传给其他函数。

指向函数的指针可以作为函数参数,把函数的入口地址传递给行参,这样就可以在被调用的函数中使用实参函数。它的原理可以简单叙述为:有一个函数,他由两个形式参数,其中X1和X2为指向函数的指针变量,在调用函数时,给行参传递的是函数入口地址,这样就可以在调用函数中调用参数函数了。例如:

2.返回指针值的函数

一个函数可以返回一个整数、字符、浮点数,也可以返回指针型的数据,定义返回指针值的函数的一般形式为:

如果这种定义格式不容易记忆,我们可以定义为这样: 类型名* 函数名(参数列表);

2.1 样例代码(需要仔细分析)






评论已关闭