指针数组:是一个数组,存放的都是指针:
简单:
#include#include int main(){ int l; int a,b,c,d; a = 20; b = 20; c = 30; d = 40; int *p[4] = {&a,&b,&c,&d}; for (int i = 0; i < 4; i++) { printf("%dn",*(p[i])); } return 0; }
定义的时候:中括号先和数组名结合,表水他是个数组。然后前面加上个*用来定义他存放的类型为指针,区分于数组指针int (*p)[4]:*号先和指针名结合,表示他是个指针,再和中括号结合,表示他的子地址个数。
复杂:
#include#include int addData(int a,int b){ return a + b; } int maxData(int a,int b){ return a > b? a:b; } int minData(int a,int b){ return a < b? a:b; } int main(){ int a = 10,b = 20,n; int (*p)(int,int ); printf("请输入一个数来决定运算规则,1(求大值),2(求小值),3(求和)n"); scanf("%d",&n); switch(n){ case 1: p = maxData; break; case 2: p = minData; break; case 3: p = addData; break; default : printf("请输入1~3之间的数值"); exit(-1); break; } int (*p2[3])(int ,int) = {maxData,minData,addData}; printf("对应法则输出的值为:%dn",(*p)(a,b)); printf("对应法则输出的值为:%dn",(*p2[n - 1])(a,b)); }
返回值为int的函数指针数组



