• 指针函数与指针数组


    1. 函数指针 void (*f)()

    2. 函数返回指针 void *f()

    3. const 指针. const int * or int const *. 即指针指向的值不能被修改, const 在 * 左边

    4. 指向 const 的指针. int * const, 指针本身不能被修改

     

    例题1:

    一个指向整型数组的指针定义为

    A. int(*ptr) [] B. int *ptr[] C. int *(ptr[]) D. int ptr[]

    A 是指向整型数组的指针

    B, C 等价, 是指向数组的指针, 数组的元素是 int*

     

    例题2:

    int main() {

        int a[] = {1, 2, 3, 4, 5};

        int *ptr = (int *)(&a + 1);

        printf("%d %d", *(a+1), *(ptr-1));

    }

    返回的结果是 2, 5

    数组名本身就是指针, 再加上 & 就变成了双指针, 这里的双指针就是指二维数组, 加上 1, 就是数组整体加一行, ptr 指向第六个元素

     

    例题3:

    float (**def) [10]; def 是一个二级指针, 它指向一个一维数组的指针, 数组元素都是 float

    double* (*gh) [10]; gh 是一个指针, 它指向一个一维数组, 数组的元素都是 double*

    double (*f[10])(); f 是一个函数数组,

    int (*(*f)(int, int))(int); f是一个函数指针, 参数为两个 int 并返回一个函数指针, 该函数的指针接受一个 int 并返回一个 int

     

    例题4:

    int main() {

        char* a[] = {"hello", "the", "world"};

        char **pa = a;

        pa ++;

        cout << *pa << endl;    

        return 0;

    }

     

    输出是 the

    char* a[] 等价于 char* (a[]), pa 是一个二维数组

  • 相关阅读:
    数据表管理admin
    HDU 5057
    HDU 5056
    HDU 6035(树形dp)
    CodeForces 586D
    Codeforces 940D
    CodeForces 820C
    TOJ4114(活用树状数组)
    2017CCPC中南地区赛 H题(最长路)
    CodeForces 544C (Writing Code)(dp,完全背包)
  • 原文地址:https://www.cnblogs.com/zhouzhuo/p/3639880.html
Copyright © 2020-2023  润新知