什么是指针数组?
一个数组,若其元素均为指针类型数据,称为指针数组。也就是说指针数组中的每一个元素都存放一个地址,相当于指针变量
如何定义?
int *p[4]
由于 [ ]的优先级比 * 优先级高,因此 p 先与 [4] 结合,形成p[4], 这显然是一个数组,表示 p 数组中有4个元素,然后再与p前面的*结合,同时*也表示数组是指针类型的,数组每个元素都可以指向一个指针整型变量。
例如:
int a = 10;
int b = 20;
int c = 30;
int d = 40;
int* p[4] = {&a, &b, &c, &d};
函数指针数组
根据上面的定义我们可以写出:
int getMax(int data1, int data2)
{
return data1 > data2 ? data1 : data2;
}
int getMin(int data1, int data2)
{
return data1 < data2 ? data1 : data2;
}
int getSum(int data1, int data2)
{
return data1 + data2;
}
int (*pfunc[3])(int, int) = {getMax, getMin, getSum}; // 函数指针数组
拆解:
定义函数指针是:
int (*pxxx)()
函数指针数组则是:
int (*pxxx[3])()
函数指针数组,数组里面的每一项只能存放函数的地址。
函数名就是地址
指针 == 地址
指针变量 == 存放地址的变量