• 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;
    }
  • 相关阅读:
    JDBC
    初识JAVA
    初入门 HTML
    jsp数据交互(一).3
    jsp数据交互(一).2
    jsp数据交互(一).1
    jsp的简介(1)
    Android实现数据存储技术
    Android数据存储五种方式总结
    SD卡操作
  • 原文地址:https://www.cnblogs.com/smh2015/p/7798546.html
Copyright © 2020-2023  润新知