函数指针
如果在程序中定义了一个函数,在编译时,编译系统为函数代码分配一段存储空间,这段存储空间的起始(又称入口 地址)称为这个函数的指针。(指针即是地址)
我们定义一个指针变量,这个指针变量指向一个整型数据变量的地址,我们称指向一个整型数据的指针变量;那么它指向一个函数的地址,称为指向一个函数的指针变量。
形如: int(*p)(int, int);
定义一个变量名为p的指针变量,它指向一个类型为整型且带有两个整型参数的函数。
p的类型用 int(*)(int, int)表示
NOTE:
1、星号的优先级比括号的优先级低
2、*p一定要用括号括起来,如果没有,则变成:int *p(int,int),这是一个指针函数,函数的返回值类型为指针。
使用的方法:
#include <stdio.h>
int max(int a, int b); //返回两者中的最大的一个值,具体的实现代码不贴出来
int main(void)
{
int n,m;
int (*p)(int, int); //定义一个指向整型函数且有两个整型参数的指针变量
p = max; //把max函数的入口地址赋值给函数指针
printf("%d\n",(*p)(n, m)); //在printf中用指针变量调用max函数,并打印出最大值
}
记录C语言中容易忽略的小知识点:
1、除法运算符 / 容易和 \ 弄混,记忆方法:除法运算符和取余运算符 % 的方向一致。
2、do-while循环语句在while后面要加分号作为结束语句。do … while(表达式);