zoukankan      html  css  js  c++  java
  • C的指针和数组

    int i;    //定义整型变量i

    int *p;    //定义一个指向int的指针变量p

    int a[5];   //定义一个int数组a

    int *p[5];  //定义一个指针数组,其中每个数组元素指向一个int型变量的地址

    int (*p)[5];  //定义一个指向int[5]类型的指针变量

    int func();   //定义一个函数func,返回类型为int

    int *func();    //定义一个函数,返回类型为int*

    int (*p)();    //定义一个指向函数的指针,返回类型为int

    int **p;     //定义一个指向int的指针的指针,二级指针

    a[1]+2 = *(a+1)+2 = &a[1][2]     //第一行第二列元素地址

    *(a[1]+2) = *(*(a+1)+2) = a[1][2] // 第一行第二列元素的值

    多级指针

    int a;

    int *p = &a;    //指向整型变量a的指针,通过*p访问a

    int **pp = &p;   //指向int型指针p的指针,通过**pp访问a,通过*pp访问p

    int ***ppp = &pp;   //指向int **pp的指针,通过***ppp访问a

    函数作为参数

    1.不用typedef

    int *func1(int n)      ///定义一个函数,返回类型为int*
    {
    
      printf("%d",n);
    
    }
    
    int  *func2(int *(*p)(int ),int n)
    
    {
    
      return p(n);
    
    }
    
    int main
    
    { 
    
      int a = 1;
    
      int *p = func2(func1,a);
    
      return 0;
    
    }
    

    2.使用typedef

    int *func1(int n)      ///定义一个函数,返回类型为int*
    {
    
    printf("%d",n);
    
    }
    
    typedef int *(*P_INT)(int);    //定义P_INT是指向int *函数形参为int的函数的指针 ,即为指向func1函数的指针
    
    int  *func2(P_INT p,int n)
    
    {
    
      return p(n);
    
    }
    
    int main
    
    { 
    
      int a = 1;
    
      int *p = func2(func1,a);
    
      return 0;
    
    }
    

      

    进阶:定义一个函数的数组

    int *func1(int n)      ///定义一个函数,返回类型为int*
    {
    
    printf("%d",n);
    
    }
    
    typedef int *(*P_INT)(int);    //定义P_INT是指向int *函数形参为int的函数的指针 ,即为指向func1函数的指针
    
    int  *func2(P_INT p,int n)
    
    {
    
      return p(n);
    
    }
    
    int main
    
    { 
    
      int a = 1;
    
      int *p = func2(func1,a);
        
           P_INT arr[5];//原始定义 int *(*p[5])(int);
                                //这是一个数组,一共5个成员,每个成员都是指向int *函数形参为int的函数的指针
    
      return 0;
    
    }    
    

      typedef进阶:

    上面的代码中int *func1(int n)作为一个函数的返回值

    P_INT func3()
    {
      return func1;
    }
  • 相关阅读:
    对json按某个键的值进行排序(转载)
    nrm -- NPM registry 管理工具
    easyui-filebox 文件上传
    Netty,Thrifty
    VS2015 framework4.5代码提示英文切换为中文
    .NET Runtime version 2.0.50727.8762
    js moment.js日期操作类 datetime,日期操作,dayjs
    Oracle.ManagedDataAccess.dll
    打造自己的JavaScript武器库(转)
    Vue.js实战 5.5章 购物车
  • 原文地址:https://www.cnblogs.com/smh2015/p/7798546.html
Copyright © 2011-2022 走看看