学习c语言指针(学习c语言的函数指针)

起因

函数的入口是地址,所以是可以用一个指针去指向这个地址的.当然刚开始使用函数指针的时候,感觉是很怪异的.多用几次就好了,要有一个适应的过程.

如何声明一个函数指针

#include <stdio.h> //函数声明 int add(int a,int b); int add(int a,int b) { return a b; } int main(int agc,char *argv[]) { //如何声明一个函数指针,假设要接收add的函数的指针 //1. 先写出接收的函数声明,改一下函数名 //int calc(int a,int b); //2. 用括号将函数名 //int (calc)(int a,int b); //3. 既然函数指针,是一个指针,在函数名加*号是少不了的 int (*calc)(int a,int b); calc = add; int sum = calc(10,20); printf("sum=%d\n",sum); return 0; }

函数指针作为参数使用

#include <stdio.h> int add(int a,int b); int sub(int a,int b); //函数指针作为参数 int calc(int (*fp)(int a,int b),int a,int b); int add (int a,int b) { return a b; } int sub(int a,int b) { return a - b; } int calc(int (* fp)(int a,int b),int a,int b) { return (fp)(a,b); } int main(int argc,char *argv[]) { int a,b; printf("请输入两个数(10 20)\n"); scanf("%d %d",&a,&b); //将函数指针作为参数传入函数 printf("调用add函数结果:%d\n",calc(add,a,b)); printf("调用sub函数结果:%d\n",calc(sub,a,b)); return 0; }

学习c语言指针(学习c语言的函数指针)(1)

函数指针作为参数使用

函数指针作为返回类型

#include <stdio.h> //函数声明 int add(int a,int b); int sub(int a,int b); //函数声明,有三个参数,一个函数指针,剩下两个是int类型的参数 int calc(int (*fp)(int a,int b),int a,int b); //函数指针作为函数的返回类型使用 //函数声明,返回一个有2个参数函数指针,参数为char类型 int (*selected(char c))(int a,int b); int add(int a,int b) { return a b; } int sub(int a,int b) { return a - b; } int calc(int (*fp)(int a,int b),int a,int b) { return (*fp)(a,b); } int (*selected(char c))(int a,int b) { switch(c) { case ' ': return add; case '-': return sub; } } int main(int argc, const char * argv[]) { printf("输入一个计算(10 20)\n"); int a,b; char c; int (*pf)(int ,int); scanf("%d %c %d",&a,&c,&b); pf = selected(c); int sum = pf(a,b); printf("%d %c %d = %d\n",a,c,b,sum); return 0; }

学习c语言指针(学习c语言的函数指针)(2)

函数指针作为函数的返回类型使用

如果您觉得对您有用的话,可以点个赞或者加个关注,欢迎大家一起进行技术交流

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页