C
指针函数
指针数组:是一个数组,存放的都是指针:
简单:
#include <stdio.h>
#include <stdlib.h>
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("%d\n",*(p[i]));
}
return 0;
}
定义的时候:中括号先和数组名结合,表水他是个数组。然后前面加上个*用来定义他存放的类型为指针,区分于数组指针int (*p)[4]:*号先和指针名结合,表示他是个指针,再和中括号结合,表示他的子地址个数。
复杂:
#include <stdio.h>
#include <stdlib.h>
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("对应法则输出的值为:%d\n",(*p)(a,b));
printf("对应法则输出的值为:%d\n",(*p2[n - 1])(a,b));
}
返回值为int的函数指针数组