函数在内存中存储的,因此,函数也有一个起始地址,实际上,函数名就是函数的起始地址。
函数指针的形式:返回值(*指针变量名)(形参1,形参2)
获取了该函数指针,相当于我们获取了函数,因此,可以通过这个指针来方便的操作函数。
例子如下:
//
// main.c
// Point
//
// Created by Kenshin Cui on 14-6-28.
// Copyright (c) 2014年 Kenshin Cui. All rights reserved.
//
#include <stdio.h>
int sum(int a,int b){
return a+b;
}
int sub(int a,int b){
return a-b;
}
//函数指针作为参数进行传递
int operate(int a,int b,int (*p)(int,int)){
return p(a,b);
}
int main(int argc, const char * argv[]) {
int a=1,b=2;
int (*p)(int ,int)=sum;//函数名就是函数首地址,等价于:int (*p)(int,int);p=sum;
int c=p(a,b);
printf("a+b=%d\n",c); //结果:a+b=3
//函数作为参数传递
printf("%d\n",operate(a, b, sum)); //结果:3
printf("%d\n",operate(a, b, sub)); //结果:-1
return 0;
}