一、指针函数
概念:返回值是指针或的函数
定义:指针类型 *函数名(形参表){} //返回的必须是定义的类型的指针
问题1:比较两个数,返回大数的地址
int *max(int *x,int *y){
printf("&x=%p\n",x);
printf("&y=%p\n",y);
return *x>*y?a:y;
}
void main(){
int a=3,b=4;
printf("&a=%p\n",&a);
printf("&b=%p\n",&b);
int *p=max(&a,&b);
}
问题2:输入1-7的数字,判断星期几
char * getDay(int n){
char * days[]={"星期一","星期二","星期四","星期四","星期五","星期六","星期日"};
return n<8&&n>0?days[n-1]:"输入错误";
}
void main(){
printf("%s\n",getDay(n));
}
二、函数指针
概念:存放函数首地址的指针变量就是函数指针变量
定义:返回值类型 (*指针变量名)(函数的参数);
函数的声明: 如int sum(int a,int b);
函数指针 ---->> int (*p1)(int a,int b);
//p1可以存放返回值是int类型,并且有两个形参,形参的类型还都是int类型的函数的地址
初始化:p1=sum;
如:int sum(int x,int y){return x+y;};
void main(){
int (*p)(int a,int b);
p=sum; //sum是函数的首地址
}
注意:定义函数指针的时候,可以不用谢形参名
int (*p)(int ,int );
p=sum;
用法:
创建函数,实现+-*/功能
int sum(int x,int y){return x+y;}
int add(int x,int y){return x-y;}
int cheng(int x,int y){return x*y;}
int chu(int x,int y){return x/y;}
//1、定义函数指针
int (*p)(int ,int);
//2、给函数指针初始化
p=sum; //只要修改函数就可以实现不同的功能
//3、用函数指针间接调用函数
int s=p(40,30); //也可以写成(*p)(40,30) |
|