zoukankan      html  css  js  c++  java
  • 一个指向指针函数的函数指针

    首先明白两个概念:

    函数指针:一个指向函数的指针,这个指针获得对应的函数名的地址。比如说整型指针,我们知道是一个指向整型数据的指针,那么函数指针顾名思义就是一个指向函数的指针,

            声明一个整型变量这样写: int a;

         声明一个整型指针这样写:int * a; //即变量名加个*号

         声明一个返回值为整型的函数这样写: int Swap(int*,  int*);

         声明一个指向返回值为整型的函数的指针这样写:int (*Swap)(int*, int*);//其中这个int就是所指向的函数的返回值类型,如果这个指向的函数的返回值是个整型指针,那么就可以写成 int* (*Swap)(int*, int* )

    指针函数:一个返回值为指针的函数,比如说整型函数是值返回值为整型的函数,那么指针函数的意思就是返回值是指针,

         声明一个返回值为整型的函数这样写: int a(int, int);

         声明一个返回值为整型指针的函数这样写:int * Swap(int*, int*); 把后面的Swap(int*, int*)当成也给变量p ,也就成了int* p这种常见的形式了。

    一个指向指针函数的函数指针

        首先分析下,这个描述其实描述的还是函数指针,这个指针指向一个函数,而且函数的返回值是个指针,看起来有点绕:

        1. 这个指针的组成部分有:   指向函数的返回值类型      (* 指针变量)(函数的形参表)

        2. 即写成 ,           int *      (*    p      )(int*, int*)

        3. 写漂亮点就是 int *(*p)(int*, int*)

     1 #include<stdio.h>
     2 //下面定义一个指针函数 
     3 int* Swap(int *a, int *b){
     4     
     5     int temp;
     6     temp = *a;
     7     *a = *b;
     8     *b = temp;
     9     return a;
    10 }
    11 //定义某个函数的函数指针,首先必须要申明这个指针指向一个返回值是什么样的函数,int* 这是函数的返回类型,
    12 //(*pSwap)是声明一个指针,所以int* (*pSwap)(int*,int*) 是一个指针函数的函数指针。 
    13 int main(){
    14     int* (*pSwap) (int *, int *);//下面定义一个函数指针,这是一个指针,指向一个返回值为int *的函数 
    15     int a = 99, b= 100, c= 0;
    16     c=*Swap(&a,&b);
    17     pSwap=Swap;//得到这个函数的地址 
    18     printf("返回的数值是,a原来是99,现在是: %d
    ",c);
    19     printf("返回的数值是,a原来是99,现在是: %d
    ",*pSwap(&a, &b));
    20     return 0;
    21 }

         

    厚积薄发,开物成务。 德才兼备、知行合一。 自强不息,厚德载物。
  • 相关阅读:
    软件工程基础 结对项目作业
    软件工程基础 第3次个人作业
    软件工程基础 第2次个人作业
    软件工程基础 第1次个人作业
    BUAA_2019_MATLAB基础与应用_期末复习纲要
    BUAA_2019_数学建模_期末复习提纲
    技术学习资源
    线程优先级的高低和执行顺序的关系
    阿里和Google的JAVA开发规约
    java中创建线程的3种方法
  • 原文地址:https://www.cnblogs.com/robohou/p/8588232.html
Copyright © 2011-2022 走看看