天天看点

复杂指针阅读技巧

复杂指针阅读技巧

①int (*p1)(int*, int (*f)(int*));

    //p1为指针,指向函数,指向函数的第一参数为int*类型,返回值为int;f也为函数指针,指向函数的参数为int*类型,返回值为int

②int (*p2[5])(int*);

    //p2为数组,数组包含5个元素,元素为指针,指向函数,函数类型为 int(int*) ==>p2为指针数组

③int (*(*p3)[5])(int*);

    //p3为指针,数组指针,指向的数组有5个元素,且这5个元素为指针,是函数指针,指向的函数类型为 int(int*)

④int*(*(*p4)(int*))(int*);

    //p4为指针,函数指针,该函数的参数为int*,返回值是指针,是函数指针,且指向的函数类型为 int*(int*)

⑤int (*(*p5)(int*))[5];

    //p5为指针,函数指针,该函数的参数为int*,返回值是指针,指向数组,指向的数组类型为int[5]

简化⑤:

typedef int(ArrayType)[5];

typedef ArrayType* (FuncType) (int*);

FuncType *p5;

继续阅读