每日一C之指向函数的指针
每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。
今日贝壳:关于指向函数的指针pointer的那点事
C语言中,函数本身不是变量,但可以定义指向函数的指针,这类指针称为函数指针,可以赋值,做函数参数等。
1.定义函数指针:函数指针的定义要同指向函数保持一致,这种一致性体现在两个方面:
1.1返回值一致
1.2参数一致
如: 函数: int foo(int a,int b)
那么该函数的指针: int (*p) (int , int )
该函数指针在返回值,参数列表上都与函数保持一致,(*p)括号必须有。
2.函数指针赋值:
过赋值语句:p=foo;可实现函数指针指向foo()函数,函数同数组类似:
1.赋值不需要取址&运算符。
2.使用不需要间接操作符*。
3.函数指针的一般用法:
#include
int Sub(int a,int b){ //定义减法操作函数
return (a-b);
}
int Add(int a,int b) //定义加法操作函数
{
return (a+b);
}
int main()
{
int (*p)(int,int); //定义函数指针
p=Sub;
printf("a-b=%d \n",p(100,3));//调用函数Sub()
p=Add;
printf("a+b=%d \n",p(100,3));//调用函数Add()
return 0;
}
下一节,将会讲解函数指针的一个巧妙运用。
Have a nice day !