#include "stdio.h"
#include "stdlib.h"
#include <string.h>
/*--------------指针函数---------------*/
int *f(int a,int b ){
int *p = (int*)malloc(sizeof(int)); //给指针分配内存
*p = a + b ; //给指针变量赋值
return p ; //返回指针的地址
}
int main(){
int *p1 ;
p1 = f(1,2); // 把指针的地址取出来给指针P1
printf("%d",*p1);//输出指针变量值为3
return 0 ;
}
/*----------函数指针----------------*/
int add(int x,int y){ //函数声明
return x+y;
}
int sub(int x,int y){ //函数声明
return x-y;
}
int (*fun)(int x,int y);//函数指针定义
int main(){
fun = add; //函数指针指向函数的地址 第一种写法
printf("%d \n", (*fun)(1,2)); //结果为3
fun = ⊂//函数指针指向函数的地址 第二种写法
printf("%d \n", (*fun)(3,2)); //结果为1
return 0;
}
/*-----------------数组函数指针--------------------------------*/
int add1(int a , int b) //初始化函数
{
return a+b ;
}
int add2(int a , int b)//初始化函数
{
return a+b;
}int main()
{
int num1= 1,num2 = 2;
int num3= 4, num4 = 6;
int (*op[2])(int a,int b); //定义一个为整形返回值数组函数指针
op[0] = add1; // 函数的地址送给数组指针
op[1] = add2; // 函数的地址送给数组指针
printf(" %d \n", op[0](num1,num2)); // 输出op数组函数所返回值
printf(" %d \n", op[1](num3,num4)); // 输出op数组函数所返回值
}