函数与指针
指针函数:
返回值为指针类型的函数
如:int * fun(int)
#include <stdio.h> #include <stdlib.h> #define M 3 #define N 3 int * find_num(int (*p)[N],int num) { if(num>M-1) return NULL; return *(p+num); } void main(int argc,char *argv[]){ int i; int a[M][N]={1,2,3,4,5,6,7,8,9}; int *p=find_num(a,1); if(p !=NULL) { for(i=0;i<N;i++) { printf("%d ",p[i]); } printf("\n"); } else printf("can not find\n"); } 4 5 6
函数指针:
类型 (* 指针名) (形参列表)
如: int (*p)(int)
#include <stdio.h> #include <stdlib.h> int add(int a,int b) { return a+b; } void main(int argc,char *argv[]){ int a=3,b=5; int (*p)(int,int) ; p=add; //&add &可省略 int ret; //ret=add(a,b); ret=p(a,b); printf("ret=%d\n",ret ); }
函数指针数组
类型 (*数组名 [下标]) (形参)
如: int (*arr[N])(int)
#include <stdio.h> #include <stdlib.h> int add(int a,int b) { return a+b; } int plus(int a,int b) { return a-b; } void main(int argc,char *argv[]){ int a=3,b=5; int i; int ret; int (*funp[2])(int ,int); funp[0]=add; funp[1]=plus; for(i=0;i<2;i++) { ret=funp[i](a,b); printf("ret=%d\n", ret); } }
指向指针函数的函数指针数组
int *(*funp[N])(int)

浙公网安备 33010602011771号