一 指针函数与函数指针
1、指针函数:本质还是函数,返回一个某一类型的指针。
类型标识符 *函数名(参数表)
int *f(x,y);
比如: char* f();
char* p;
p = f();
2、函数指针:一个指针指向某一个函数,本质是一个指针。
int (*f) (int x); // 声明一个函数指针
f=func; //将func函数的首地址赋给指针f
void (*fptr)();
fptr=&Function;(或者fptr=Function;)
可以采用如下两种方式来通过指针调用函数:
x=(*fptr)();
x=fptr();
二 指针数组及数组指针
1、指针数组:本质是一个数组,比如
float**def[10]
一个含有10个元素的数组,数组的元素类型为float**,指向float*对象的指针
2、数组指针:是一个指针
float(**def)[10]
一个指针,这个指针(def)指向另一个指针(tmp),而这另一个指针(tmp)指向一个数组元素为float变量的大小为10的数组,以下代码说明了这个意思
三、其他一些类型
float*(*def)[10]
一个指向数组的指针,这个数组大小为10,元素类型为float*。
float (*def)(int)
一个指向函数的指针,这个函数接受一个int值作为参数,返回值为float型。
float (*def[10])()
一个数组,这个数组有10个元素,每个元素都为指向函数的指针,这些函数无参数且返回值为float型。
最变态的一个:
int (*(*def)(int, int))(int)
是一个指向函数的指针,指向的函数的类型是有两个int参数并且返回一个函数指针的函数,返回的函数指针指向有一个int参数且返回int的函数。