学点 C 语言(38): 函数 - 函数指针

180it 2020-03-05 AM 1794℃ 0条

学点 C 语言(38): 函数 - 函数指针

先复习函数的定义与函数的声明:
//这是一个求和函数的定义:
int add(int x, int y)
{

return(x + y);

}

//可以这样声明:
int add(int x, int y);

//也可以这样声明:
int add(int, int);

定义一个函数指针声明一个函数差不多, 用 (* ) 包括函数即可:
//像这样:
int (*pfun)(int, int);

//或这样:
int (*pfun)(int x, int y);

//也可以:
typedef int (*pfun)(int, int);

//这就声明了一个叫 pfun 的函数指针, 能被它指向的函数一定要有相同的参数格式.

  1. 简单例子:

    include <stdio.h>

int add(int x, int y) {return(x + y);}
int sub(int x, int y) {return(x - y);}
int mul(int x, int y) {return(x * y);}
int div(int x, int y) {return(x / y);}

int main(void)
{

int (*pf)(int, int);

pf = add;
printf("%d\n", pf(9, 3)); /* 12 */

pf = sub;
printf("%d\n", pf(9, 3)); /* 6  */

pf = mul;
printf("%d\n", pf(9, 3)); /* 27 */

pf = div;
printf("%d\n", pf(9, 3)); /* 3  */

getchar();
return 0;

}

  1. 函数指针数组:

    include <stdio.h>

int add(int x, int y) {return(x + y);}
int sub(int x, int y) {return(x - y);}
int mul(int x, int y) {return(x * y);}
int div(int x, int y) {return(x / y);}

int main(void)
{

int (*pf[4])(int, int) = {add, sub, mul, div};

printf("%d\n", pf[0](9, 3)); /* 12 */
printf("%d\n", pf[1](9, 3)); /* 6  */
printf("%d\n", pf[2](9, 3)); /* 27 */
printf("%d\n", pf[3](9, 3)); /* 3  */

getchar();
return 0;

}

  1. 用函数指针做参数:

    include <stdio.h>

int add(int x, int y) {return(x + y);}
int sub(int x, int y) {return(x - y);}
int mul(int x, int y) {return(x * y);}
int div(int x, int y) {return(x / y);}

int math(int(*pfun)(int, int), int x, int y) {

return pfun(x, y);

}

int main(void)
{

printf("%d\n", math(add, 9, 3)); /* 12 */
printf("%d\n", math(sub, 9, 3)); /* 6  */
printf("%d\n", math(mul, 9, 3)); /* 27 */
printf("%d\n", math(div, 9, 3)); /* 3  */

getchar();
return 0;

}

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!

标签: none

学点 C 语言(38): 函数 - 函数指针