zoukankan      html  css  js  c++  java
  • 关于函数指针--简介

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

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

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

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

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

    直接代码了

    #include<stdio.h>
    #include<stdlib.h>
    void (*f1)(); 
    void f2();
    
    void main()
    {
      f1=f2;
    
      (*f1)();
    }
    void f2()
    {   
        printf("11111
    ");
    }  

    f1=f2;这个好理解--把f2的地址给了f1呗;
    (*f1)();这一句,要想一下*f1中的*在想一想在普通指针中什么意思  取取取取取取  要想--哎呀*f1不就相当于f2吗  所以(*f1)();不就相当于f2();

    看下一个

    #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
    ",x);
    }  

    也没什么难的

    void (*f1)(int x); 
    void f2(int x);
    不过好像这两个的类型要一样,,,现在都是无返回值的带int型的参数的函数
    
    
     再看下一个

    #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
    ",x);
        return 0;//必须返回点东西,不然编译会报错
    }  

     

    运行结果和上面一样--理所当然



    #include<stdio.h>
    #include<stdlib.h>
    
    void f2();
    void f3( void(*f4)() );
    void main()
    {
        f3(f2);
    }
    void f2()
    {   
        printf("1111
    ");
    }
    void f3( void(*f4)() )  
    {
        (*f4)();
    }

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

     
  • 相关阅读:
    redis中文API
    基于redis的分布式锁
    redis安装使用配置
    windows常用命令
    curl命令详解
    linux远程连接
    memcache在大型网站的应用策略
    缓存使用的一些注意事项
    记录memcache分布式策略及算法
    U盘安装Centos7.0图解
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/5730956.html
Copyright © 2011-2022 走看看