#include<stdio.h>
#include<string.h>
//指针函数: 是一个函数, 但是这个函数的返回值类型是一个指针
//函数指针: 是一个指针, 这个指针的指向是一个函数
//下面是指针函数
int * fun()
{
int a = 10;//a 是一个局部变量
int *p;
p = &a;
return p;
}
int main()
{
int *p1 = fun();
printf("%d", *p1);
}
//10
#include<stdio.h>
#include<string.h>
//指针函数: 是一个函数, 但是这个函数的返回值类型是一个指针
//函数指针: 是一个指针, 这个指针的指向是一个函数
void fun1(int a , int b){
printf("a+b = %d", a+b);
}
//函数指针的定义个数: 函数的返回值类型(*函数指针名)(函数的形参)
void (*pfun) (int a , int b);//函数名, 就是函数的首地址
int main(){
pfun = fun1;
pfun( 10, 11); // a+b = 21
}
#include<stdio.h>
#include<string.h>
//指针函数: 是一个函数, 但是这个函数的返回值类型是一个指针
//函数指针: 是一个指针, 这个指针的指向是一个函数
int add (int a , int b){
return a+b;
}
int sub(int a, int b ){
return a-b;
}
//指针函数, 类似于python把函数作为形参传给另外一个函数,但是这里的函数新参不需要指定, 在调用的时候指定就可以了
void fun3(int (*pf)(int, int ), int x , int y)
{
printf ("%d\n", pf(x,y));
}
int main(){
fun3(add, 10, 11);// 在调用函数fun3的时候再指定指针函数为add()
fun3(sub, 10, 11);//在调用函数fun3的时候再指定函数为sub()
}
21
-1
#include<stdio.h>
#include<string.h>
//指针函数: 是一个函数, 但是这个函数的返回值类型是一个指针
//函数指针: 是一个指针, 这个指针的指向是一个函数
//函数指针取别名
int add (int a , int b){
return a+b;
}
int sub(int a, int b ){
return a-b;
}
typedef int (*pf)(int , int);//函数指针取别名, 别名就是他自己, 并且别名可以当做类型去使用
void fun3(pf pf1, int x , int y)//别名pf 可以当做类型去使用, 定义一个pf 类型的变量pf1
{
printf ("%d\n", pf1(x,y));
}
int main(){
fun3(add, 10, 11);// 在调用函数fun3的时候再指定指针函数为add()
fun3(sub, 10, 11);//在调用函数fun3的时候再指定函数为sub()
}