版权声明:本文为博主原创文章,未经博主允许不得转载。
http://blog.csdn.net/huangxuesi/article/details/78030975
我们分别从定义、声明方法和使用来进行对比,就会对两者的区别有个清晰的理解。
一、定义
1、指针函数:是指带指针的函数,即本质是一个函数,函数返回类型是某一类型的指针。
2、函数指针:是指向函数的指针变量,其本质为一个指针,其实叫做函数的指针更好理解一些。
区别:一个是函数,一个是指针,从本质上就不相同。
二、声明方法
1、指针函数:
类型名 *函数名(参数列表);
int *Func1(int x);//声明一个指针函数
2、函数指针:
类型名 ( *函数名)(参数列表);
int (* Func2)(int x);//声明一个函数指针
说明:
(1) Func1为函数名,表示函数的地址,函数的返回值类型为 int*;
(2) Func2为一个指针,指向一个返回值类型为int、函数参数列表为(int x)的函数。对于函数指针的声明方法还可这么理解,因为 (* Func2),所以Func2首先是一个指针,右边加上参数列表(int x),左边加上返回类型int,所以Func2是一个返回值类型为int、函数参数列表为(int x)的函数的指针。
版权声明:本文为博主原创文章,未经博主允许不得转载。
http://blog.csdn.net/huangxuesi/article/details/78030975
三、使用例程
1、指针函数:
//指针函数.c
int *Func1(int a, int b);//声明一个指针函数
int main(void)
{
int a,b;
int *c = NULL;
a = 3;
b = 4;
c = Func1(a, b); //调用Func1函数求a和b的和,将相加结果值所在的地址赋值给指针c;
printf("a+b = %\n",*c); //将c地址里的值打印出来, 输出a+b = 7
}
int *Func1(int x, int y);//定义一个指针函数,实现两个数相加,将结果所在的地址返回
{
static int sum = 0;
sum = x + y;
return ∑
}
2、函数指针:
//函数指针.c
int Func1(int x, int y);//声明一个函数,实现两个数相加
int main(void)
{
int a,b,c;
int (*Func)(int x, int y); //声明一个函数指针
a = 5;
b = 6;
Func = Func1; //函数指针初始化,之后可以直接使用Func实现Func1函数一样的功能
c = Func(a, b); //实现a和b相加,将结果赋值给c
printf("a+b = %\n",c); //打印c的值, 输出a+b = 11
}
int Func1(int x, int y);//定义一个函数,实现两个数相加,将相加所得的值返回
{
int sum = 0;
sum = x + y;
return sum;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
http://blog.csdn.net/huangxuesi/article/details/78030975