2、函数定义:返回值类型 + 函数名 + (形参表说明)
函数指针:指向函数的指针。
函数指针数组:存放多个函数指针的数组。
判断下列定义的含义:
1)int p[3]: 整型指针数组(因为[] > * , 所以是一个数组)
2)int (*p)[3]:指向数组的指针(因为() > [] , 所以是一个指针)
3)int * p (int):一个函数,返回值为int *类型,参数为int类型。
4)int (*p)(int):函数指针,指向的函数返回值为int类型,参数为int类型。
5)int *(*p)(int):函数指针,指向的函数返回值为int *类型,参数为int类型。
6)int (*p[3])(int):函数指针数组,指向的函数返回值为int 类型,参数为int类型。
7)int *(*p[3])(int):函数指针数组,指向的函数返回值为int *类型,参数为int类型。
指针数组:一个普通数组,但其类型由元素类型决定,每一个元素是一个指针。
数组指针:指向一个数组的第一个元素的指针,通过偏移量可得到该数组指定下目标的元素。
指针函数:是一个普通函数,但它的返回值是一个指针。
函数指针:是一个指向一个函数的指针,可以把这个指针作为参数传进去,调用者用这个指针可以调用对应的函数,.NET里的delegate应该是使用这种机制实现的。
其实指针可以实现一些非常好的功能,当年我就用一个指针数组,保存一些函数的指针,然后把这个数组的指针作为参数传到调用方,调用方可以方便地根据需要,选择数组中不同的指针对应的函数来进行调用,实现了灵活的函数数组,例如这实现一个遥控器功能的程序,把每个按钮的功能写成一个函数,然后的把这些函数的指针装入一个数组,根据数组的下标来调用不同的函实,实现不同的功能。这种做法也是挺好的。