zoukankan      html  css  js  c++  java
  • 函数名和函数指针

     调用时:(*FunP)(20);//这是通过函数指针变量FunP来调用MyFun函数的。

     1 void MyFun(int x);//此处的申明也可以写成:void MyFun(int);
     2 void (*FunP)(int);//此处的申明也可以写成:void (*FunP)(int);但习惯上一般不这样。
     3 
     4 int _tmain(int argc, _TCHAR* argv[])
     5 {
     6     MyFun(10);//这是直接调用MyFun函数
     7     FunP = MyFun;//将MyFun函数的地址赋给FunP变量
     8     (*FunP)(20);//这是通过函数指针变量FunP来调用MyFun函数的。
     9 
    10     system("pause");
    11     return 0;
    12 }
    13 void MyFun(int x)//这里定义一个MyFun函数
    14 {
    15     printf("%d
    ",x);
    16 }
    View Code


    或者如下编译:  FunP(20);//这是通过函数指针变量来调用MyFun 函数的。

     1 #include "stdafx.h"
     2 #include <stdlib.h>
     3 #include <stdio.h>
     4 
     5 void MyFun(int x);//此处的申明也可以写成:void MyFun(int);
     6 void (*FunP)(int);//此处的申明也可以写成:void (*FunP)(int);但习惯上一般不这样。
     7 
     8 int _tmain(int argc, _TCHAR* argv[])
     9 {
    10     MyFun(10);//这是直接调用MyFun函数
    11     FunP = MyFun;//将MyFun函数的地址赋给FunP变量
    12     FunP(20);//这是通过函数指针变量FunP来调用MyFun函数的。
    13 
    14     system("pause");
    15     return 0;
    16 }
    17 void MyFun(int x)//这里定义一个MyFun函数
    18 {
    19     printf("%d
    ",x);
    20 }
    View Code

    或者:

    FunP=&MyFun;//将MyFun 函数的地址赋给FunP 变量
    FunP(20);//这是通过函数指针变量来调用MyFun 函数的。

     1 #include "stdafx.h"
     2 #include <stdlib.h>
     3 #include <stdio.h>
     4 
     5 void MyFun(int x);//此处的申明也可以写成:void MyFun(int);
     6 void (*FunP)(int);//此处的申明也可以写成:void (*FunP)(int);但习惯上一般不这样。
     7 
     8 int _tmain(int argc, _TCHAR* argv[])
     9 {
    10     MyFun(10);//这是直接调用MyFun函数
    11     FunP = &MyFun;//将MyFun函数的地址赋给FunP变量
    12     FunP(20);//这是通过函数指针变量FunP来调用MyFun函数的。
    13 
    14     system("pause");
    15     return 0;
    16 }
    17 void MyFun(int x)//这里定义一个MyFun函数
    18 {
    19     printf("%d
    ",x);
    20 }
    View Code

    FunP = &MyFun;//将MyFun函数的地址赋给FunP变量
     (*FunP)(20);//这是通过函数指针变量FunP来调用MyFun函数的。

     1 #include "stdafx.h"
     2 #include <stdlib.h>
     3 #include <stdio.h>
     4 
     5 void MyFun(int x);//此处的申明也可以写成:void MyFun(int);
     6 void (*FunP)(int);//此处的申明也可以写成:void (*FunP)(int);但习惯上一般不这样。
     7 
     8 int _tmain(int argc, _TCHAR* argv[])
     9 {
    10     MyFun(10);//这是直接调用MyFun函数
    11     FunP = &MyFun;//将MyFun函数的地址赋给FunP变量
    12     (*FunP)(20);//这是通过函数指针变量FunP来调用MyFun函数的。
    13 
    14     system("pause");
    15     return 0;
    16 }
    17 void MyFun(int x)//这里定义一个MyFun函数
    18 {
    19     printf("%d
    ",x);
    20 }
    View Code

    结论:
    1. 其实,MyFun 的函数名与FunP 函数指针都是一样的,即都是函数指针。MyFun 函数名是一个
    函数指针常量,而FunP 是一个函数数指针变量,这是它们的关系。
    2. 但函数名调用如果都得如(*MyFun)(10);这样,那书写与读起来都是不方便和不习惯的。所以
    C 语言的设计者们才会设计成又可允许MyFun(10);这种形式地调用(这样方便多了并与数学中的函数
    形式一样,不是吗?)。
    3. 为统一起见,FunP 函数指针变量也可以FunP(10)的形式来调用。
    4. 赋值时,即可FunP=&MyFun 形式,也可FunP=MyFun。

    补充说明一点:在函数的申明处:
    void MyFun(int );//不能写成void (*MyFun)(int )。
    void (*FunP)(int );//不能写成void FunP(int )。

  • 相关阅读:
    PCB电路板元器件布局的一般原则*(转)
    PCB Layout初学者必会知识总结(转)
    数字器件和模拟器件?
    同一原理图中怎么区分数字电路和模拟电路
    oracle 11g R2执行INSERT语句,数据库把一个汉字看做3个汉字
    SQL存储过程与函数的区别
    用户自定义函数——Oracle 11g R2
    提高使用SQL Developer进行PL/SQL编程的效率——Oracle 11g R2
    Oracle查看用户使用的表
    JAVA-Eclipse快捷键
  • 原文地址:https://www.cnblogs.com/chensup/p/5809951.html
Copyright © 2011-2022 走看看