函数指针 函数指针数组 指针函数 数组指针 指针数组

来源:互联网 发布:销售客户软件 编辑:程序博客网 时间:2024/05/17 01:27
指针与数组:
    指针与一维数组:
       int arrInt[] = {1,2,3,4,5};
       int* pa = arrInt;
       *pa <==> arrInt[0];
       *(pa+1) <==> arrInt[1];

       *(pa+2)=6; <==> arrInt[2]=6;


   void func(int*);

   void func(int arr[]); // 与void func(int*); 形式是一样的

   void func(int arr[4]); // 只接收元素个数为4的整形数组


函数指针:
    void func1();
    void func2(int);
    void func3(int, double);
    int* func4();
  声明函数指针:
    void (*pf1)();              // pf1表示返回值void,没有参数的函数。
    void (*pf2)(int);           // pf2表示返回值void,参数只有一个int的函数。
    void (*pf3)(int, double);   // pf3表示返回值void,参数顺序为int、double的函数。
    int* (*pf4)();              // pf4表示返回值int*,无参的函数。
  函数指针赋值:(函数名就是一个内存地址)
    pf1 = func1;
    pf2 = func2;
    pf3 = func3;
    pf4 = func4;
  函数指针调用:
    (*pf1)(); 调用func1
    (*pf2)(1); 调用func2
    (*pf3)(1, 1.3); 调用func3
    (*p4)();    调用func4


函数指针数组:
    void (*pf[3])(); 声明3个指向void func();函数的指针


指针函数:
    返回值为指针的函数形似int* func();


指针数组:(存放指针的数组)
    int *pa[3]; // []优先级高于*,[]先与int结合组成数组,再由int*声明数组元素为指针。
    int a,b,c;
    pa[0] = &a;
    pa[1] = &b;
    pa[2] = &c;
数组指针:(指向数组的指针,也叫行指针)
    int (*pa)[3]; // ()、[]优先级一样高,从左到右结合,首先是()强调pa是指针,然后是[3]pa指向有三个元素的一维数组。
    int arrInt[3] = {1,2,3};
    pa = arrInt;
    pa++; //跨越一个数组长度,越界操作。


    数组指针通常与二维数组联用:
    int arrDoubleInt[4][3];
    pa = arrDoubleInt[0]; // 指向第一行
    pa[0][1] == *(*(pa+0)+1) == 第一行第二列数据。
    pa++;               // 指向第二行
    

原创粉丝点击