C语言

来源:互联网 发布:分级基金 知乎 编辑:程序博客网 时间:2024/05/17 11:32

版权声明:本文为博主原创文章,未经博主允许不得转载。
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、指针函数:

//指针函数.cint *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、函数指针:

//函数指针.cint 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

原创粉丝点击