前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于函数指针--简介

关于函数指针--简介

作者头像
杨奉武
发布2018-04-18 11:26:55
6960
发布2018-04-18 11:26:55
举报
文章被收录于专栏:知识分享

函数指针说白了,,,,函数的地址

现在看一个简单的--先定义一个函数指针

void (*f1)();就是这样定义--指向的是一个void类型的

假设定义了另一个 void f2();

可以 f1 = &f2 或者 f1=f2;

直接代码了

代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>
void (*f1)(); 
void f2();

void main()
{
  f1=f2;

  (*f1)();
}
void f2()
{   
    printf("11111\n");
}  
代码语言:javascript
复制
f1=f2;这个好理解--把f2的地址给了f1呗;
代码语言:javascript
复制
(*f1)();这一句,要想一下*f1中的*在想一想在普通指针中什么意思  取取取取取取  要想--哎呀*f1不就相当于f2吗  所以(*f1)();不就相当于f2();

看下一个
代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>
void (*f1)(int x); 
void f2(int x);

void main()
{
  f1=f2;

  (*f1)(2);
}
void f2(int x)
{   
    printf("x=%d\n",x);
}  

也没什么难的

代码语言:javascript
复制
void (*f1)(int x); 
void f2(int x);
不过好像这两个的类型要一样,,,现在都是无返回值的带int型的参数的函数

 再看下一个

代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>
int (*f1)(int x); 
int f2(int x);

void main()
{
  f1=f2;

  (*f1)(2);
}
int f2(int x)
{   
    printf("x=%d\n",x);
    return 0;//必须返回点东西,不然编译会报错
}  
代码语言:javascript
复制
运行结果和上面一样--理所当然
代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>

void f2();
void f3( void(*f4)() );
void main()
{
    f3(f2);
}
void f2()
{   
    printf("1111\n");
}
void f3( void(*f4)() )  
{
    (*f4)();
}

其实感觉也没什么--和    void f3( *P ){a =*P }  一样的的道理

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-08-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档