#include <stdio.h>
int Square(int a)
{
return a * a;
}
int main()
{
int (*p)(int);
p = Square;
printf("%d", p(10));
}
函数指针是一个指向函数的指针;
定义的函数指针要和指向的函数的返回值类型和参数类型个数保持一致;
定义一个函数指针并指向了一个函数,那么就可以通过该指针调用这个函数了;
int (*p)(int);
p = □ //可以有&符号,也可以不加;
printf("%d", p(10));
#include <stdio.h>
int add(int a,int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
int Cal(int (*p)(int a, int b),int num1,int num2)
{
return p(num1, num2);
}
int main()
{
int result = Cal(add, 5, 6);
printf("result = %d\n", result);
result = Cal(sub, 5, 6);
printf("result = %d\n", result);
}
将函数指针作为一个函数的参数,那么这个参数要传递的是一个相同返回值和参数的函数;
int add(int a,int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
定义两个函数,一个返回两个数的和,一个返回两个数的差;
int Cal(int (*p)(int a, int b),int num1,int num2)
{
return p(num1, num2);
}
定义一个计算的参数,这个函数的第一个参数是一个函数指针,这个函数指针用来接收一个函数作为参数,后面两个int类型的参数,用来进行计算的值;
int main()
{
int result = Cal(add, 5, 6);
printf("result = %d\n", result);
result = Cal(sub, 5, 6);
printf("result = %d\n", result);
}
int result = Cal(add, 5, 6);
调用Cal函数,并把函数add作为参数传递给Cal;在Cal内部执行的就是add(5,6);
result = Cal(sub, 5, 6);
调用Cal函数,并把函数sub作为参数传递给Cal;在Cal内部执行的就是sub(5,6);