C语言 - 指针函数与函数指针的区别

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值