您的位置:首页 > 其它

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

2017-08-07 17:57 288 查看
指针与数组:

    指针与一维数组:

       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++;               // 指向第二行

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  指针 函数
相关文章推荐