A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一、指针函数
概念:返回值是指针或的函数
定义:指针类型  *函数名(形参表){}        //返回的必须是定义的类型的指针
问题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)

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马