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


    首先明白两个概念:

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

            声明一个整型变量这样写: 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 }

         

    厚积薄发,开物成务。 德才兼备、知行合一。 自强不息,厚德载物。
  • 相关阅读:
    vue中dom元素和组件的获取
    Vue.js中父子组件之间的传值和传方法
    IDEA中的快捷键
    springmvc中使用controller时,跳转视图会带上外层的地址
    通配符的匹配很全面, 但无法找到元素 'mvc:annotation-driven' 的声明
    vue中的组件
    vuejs
    成员变量(实例变量)&局部变量&静态变量(类变量)的区别
    代码块
    重载&重写
  • 原文地址:https://www.cnblogs.com/robohou/p/8588232.html
Copyright © 2020-2023  润新知