zoukankan      html  css  js  c++  java
  • 指向函数的指针函数指针/指针函数返回指针的函数

    函数指针:顾名思义就是函数的指针,由函数修饰,说明这是一个指向函数的指针。

    函数指针的应用:可以通过函数指针变量方便的调用功能不同的函数。

    上代码:

    代码一:

     1 #include <iostream>
     2 using namespace std;
     3 
     4 void Func1(int);
     5 void Func2(int);
     6 void Func3(int);
     7 typedef void (*FuncType)(int);//定义函数指针类型
    8 void CallFunc(FuncType fc, int); 9 10 11 int main(void) 12 { 13 CallFunc(Func1,10); 14 CallFunc(Func2,20); 15 CallFunc(Func3,30); 16 cout<<endl<<endl; 17 } 18 19 void Func1(int x) 20 { 21 cout<<"func1: "<<x<<endl; 22 } 23 24 void Func2(int x) 25 { 26 cout<<"func2: "<<x<<endl; 27 } 28 29 void Func3(int x) 30 { 31 cout<<"func3: "<<x<<endl; 32 } 33 34 void CallFunc(FuncType fc, int x) 35 { 36 fc(x); 37 }

    代码二:

    定义函数指针变量(全区变量VS局部变量)

     1 void MyFun(int );
     2 typedef void (*FuncType)(int);//函数指针类型
     3 FuncType FunP;//函数指针全局变量
     4 
     5 int main(void)
     6 {
     7     FuncType FunP;
     8     MyFun(10);
     9     FunP=&MyFun;//也可以改为FunP=MyFun;
    10     (*FunP)(10);//可以改为FunP(10);
    11     cout<<endl<<endl;
    12     return 0;
    13 }
    14 
    15 void MyFun(int x)
    16 {
    17     cout<<x<<endl;
    18 }

    =============================================================

    其实函数名本身也是一个指针类型,只不过是一个指针常量。根据代码二总结如下:

    1)其实,MyFun的函数名与FunP函数指针都是一样的,即都是函数指针。 MyFun 函数名是一个函数指针常量,而 FunP 是一个函数数指针变量,这是它们的关系。

    2)但函数名调用如果都得如(*MyFun)(10)这样,那书写与读起来都是不方便和不习惯的。所以C语言的设计者们才会设计成又可允许MyFun(10)这种形式地调用(这样方便多了并与数学中的函数形式一样,不是吗?)。

    3)为统一起见,FunP函数指针变量也可以FunP(10)的形式来调用。

    4)赋值时,即可FunP = &MyFun形式,也可FunP = MyFun

    -----------------------------------------------------------------------------------------------------------------

    指针函数:由指针修饰,说明这是一个返回指针的函数.比较容易理解。

  • 相关阅读:
    Linq聚合操作之Aggregate,Count,Sum,Distinct源码分析
    Linq分区操作之Skip,SkipWhile,Take,TakeWhile源码分析
    Linq生成操作之DefautIfEmpty,Empty,Range,Repeat源码分析
    Linq基础操作之Select,Where,OrderBy,ThenBy源码分析
    PAT 1152 Google Recruitment
    PAT 1092 To Buy or Not to Buy
    PAT 1081 Rational Sum
    PAT 1084 Broken Keyboard
    PAT 1077 Kuchiguse
    PAT 1073 Scientific Notation
  • 原文地址:https://www.cnblogs.com/sjlove/p/3060908.html
Copyright © 2011-2022 走看看