zoukankan      html  css  js  c++  java
  • 函数指针、数组指针、指针数组、二级指针

    函数指针、数组指针、指针数组、二级指针

    函数指针

    函数名就是个指针
    
    1. 函数的指针
      '''
      bool func(int num)
      {
      printf("heihei");
      }

    int main()
    {
    bool (func_p)(int num);
    func_p = func;
    func_p(10);
    }
    '''
    自定义函数指针来指向函数
    写出函数声明
    为函数名添加小括号
    修改函数名,在函数名前面加

    此函数指针便指向函数了,便可以通过指针调用函数了。
    2. 函数指针可以把函数当作参数在函数之间进行传递,实现函数的回调。

    例如函数:void qsort(void* base,size_t nmemb,size_t size,int(* compar)(const void*,const void*)));
      可以把现在实现的代码函数compar指针传给上函数实现排序。
    

    二级指针

    简言之即指针的指针。
    例如:float f = 3.14;float* p = &f(一级指针);float** pp = &p(一级指针的地址)。
        *p <=> f;
        *pp <=> p;
        **pp <=>*p <=> f;
    

    函数之间需要共享普通变量使用一级指针,需要共享指针变量使用二级指针。

    指针数组

    数组元素的类型是指针变量。
    char* arr[5];<==> char* p1,p2,p3,p4,p5;

    即sizeof(arr) =20;存储的是指针类型的。
    

    数组指针

    指向数组的指针。
    int    arr[10];
    int    (*p)[10] = NULL;
    p+1 =    40,数组指针加1即加了整个数组。 
    
    数组指针可以用于二维数组。
    int arr[][5] = {{1,1,1},{2,3,2},{1,1,1},{2,2,2},{1,1,1}};
    传数组需要传行列,但用数组指针只需要传行或列。
    
    注:二维数组其实是用很多一维数组模拟的,
        11111111111111111111111111111  
        1111
  • 相关阅读:
    javascript模块化进阶
    javascript模块化基础
    css架构探索
    javascript函数基础概念 (补充完结)
    聊聊圣杯布局
    javascript函数基础概念
    yum提示This system is not registered with RHN.RHN support will be disabled.
    Linux分区和挂载硬盘
    Thunderbird扩展
    yum install nginx
  • 原文地址:https://www.cnblogs.com/whl-lin/p/10125849.html
Copyright © 2011-2022 走看看