指向数组的指针:int(*p)[5];
定义了一个指向数组元素为int型的元素个数为5的一维数组;
也可以理解为二维数组的首元素就像int*p指向int型可以理解为一维数组的首元素;
也可以理解为*p为一个指针,指针里面的内容是一个有5个int值的数组;*p=a[5];
其中,"类型说明符"为所指数组的数据类型。"*"表示其后的变量是指针类型。"长度"表示二维数组分解为多个一维数组时,一维数组的长度,也就是二维数组的列数。注意,"*(指针变量名)"两边的括号不可少,如缺少括号则表示的是指针数组。
p+i 等于a[i];
*(p+i)+j等于 a[i][j];
指针数组:int* array[5];
表示数组元素为int型指针的一维数组;指向函数的指针:int (*pfun)(parameter);
上面定义了 一个指向 返回值是int型, 参数是parameter 的形参的 函数指针pfun
typedef int (*PFUN)(int a, int b);
PFUN fun;
int a = (*fun)(2, 3);
返回指针的函数:int* fun(parameter);
返回指向函数的指针的函数:
//函数形式是set_handler(void(*f)())//返回指向(返回值是void,参数是void的函数)指针
//可以理解为void (*tmp)();
//tmp = set_handler(void(*f())
void (* set_handler(void(*f)()))()
{
cout << "set_handler" << endl;
return f;
}