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 }  一样的的道理

     
  • 相关阅读:
    kuangbin_ShortPath P (HDU 4725)
    kuangbin_ShortPath O (LightOJ 1074)
    方法的定义格式
    A Better Finder Rename 9.40 Key
    [iOS] 初探 iOS8 中的 Size Class
    iOS 后台执行
    iOS7 毛玻璃效果
    PhpStorm8 注册码
    [教程] 【终极开关机加速!!】手把手教你加速Mac的开关机速度。(经验证适用10.10!)
    iOS 取应用版本
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/5730956.html
Copyright © 2011-2022 走看看