介绍C 语言中两种不常用的指针定义形式及其用法。
One
// *p 指向一个具有2个元素的一维数组
int Print (int (*p)[2])
{ // *p 相当与*arry,代表arry 数组的0行0列的首地址
// pass
}
int main()
{
// 定义一个arry 二维数组
int arry[3][2]={{1,2},{3,4},{5,6}};
// 将arry数组的首地址,递交给Print() 函数
Print(arry);
return 0;
}
简化了对二维数组的调用。
Two
int compare(int x,int y)
{
// pass
}
// 定义一个指向函数的指针,函数返回值为 int 型
int (*p)(int x,int y)
{
// pass
}
int main()
{
int num1,num2;
// 将compare()函数的 首地址,赋予指针*p
p=compare;
compare(num1,num2);
// 此时,(*p)(num1,num2) 与compare(num1,num2) 等价
(*p)(num1,num2);
return 0;
}
若把这种方法用在子函数的函数参数列表中,会有意想不到的好处。
比如:
// 回调函数 :)
void proccess(int x,int y,int (*p)(int,int))