总结:先和谁结合就是谁,先和数组结合就是数组,先和指针结合就是指针!!
(1).函数指针:
首先是指针则有: *p
又是函数则有:(*p)()
若定义一个函数指针
int (*p)(int,int)=&arr;
int arr(int x,int y)
{
;
}
(2).数组指针
同样道理先是指针 *p
后是数组则有 (*p)[ ]
定义一个数组指针:
int arr[8]={0,1,2,3,4,5,6,7};
int (*p)[8]=&arr;//表示一个指针p所指向数组arr[8]数组地址,数组中每个值为int类型;
(3).指针数组
首先是数组p[]
然后是指针则有 *(p[])
定义一个指针数组:
int a=10;
int b=8;
int c=12;
int*(p[3])={&a,&b,&c};//表示一个数组p[3],里面有三个元素,每个元素均为int *型
for(int i=1;i<=3;i++)
{
printf("%d",*(arr[i]));
}
(4)函数指针数组:
首先是数组p[]
然后是指针 (*p[])
再是函数 (*p[])()//切记不可写成 *(p[])()
则可定义一个函数指针数组:
int ADD(int x,int y)
{
return x+y;
}
int SUB(int x,int y)
{
return x-y;
}
int (*p[2])(int,int)={ADD,SUB};//表示一个指针数组指,数组里面存放的是int类型函数;