您的位置:首页 > 编程语言 > C语言/C++

关于理解指针与函数

2015-12-11 15:21 211 查看
函数指针
函数也存在地址

#include<stdio.h>

void fun()
{
prinft("fun");
}

int main()
{
prinft("fun=%p\n",&fun);
printf("fun=%p\n",fun);//输出两地址相同

fun();
(*fun)();//均输出“fun”,即均调用了函数,此时fun为函数指针
}
在函数中函数名和对函数取地址得到相同结果
int add(int a,int b)
{
return a+b;
}
int main()
{
int (*pfun)(int,int)=add;//根据函数来定义函数指针
int ret=(*pfun)(1,2);
//不能写成int ret=*pfun(1,2);,因为编译器会以为要解引用其返回
printf("%d",ret);

return 0;
}

int add(int a,int b)
{
return a+b;
}
int sub(int a,int b)
{
return a-b;
}
int operation(int (*pfun)(int ,int))
{
int num1=0;
int num2=0;
scanf("%d%d",&num1.&num2);
return pfun(num1,num2);
}
int main()
{
int ret=operation(sub);//执行减法,传人add执行加法
printf("%d",ret);
return 0;

}
对应函数指针的数组
int fun(char *s,const char*c)
{
}
int fun1(char *s,const char*c)
{
}
int fun2(char *s,const char*c)
{
}
int main()
{
int (*pfun[4])(char *,const char *);//数组中每一个元素都是一个函数
pfun[0]=fun;
pfun[1]=fun1;
pfun[2]=fun2;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C语言