函数指针与指针函数的区别

来源:互联网 发布:域名生成工具 编辑:程序博客网 时间:2024/06/07 00:37

函数指针与指针函数的区别

指针函数是带指针的函数,本质上是一个函数,函数返回类型是某一类型的指针。其形式一般如下:

类型标识符 *函数名(参数列表)

例如,int *f(x,y),它的意思是声明一个函数f(x,y),该函数返回类型为int型指针。

而函数指针是指向函数的指针变量,即本质是一个指针变量,表示的是一个指针,它指向的是一个函数。其形式一般如下:

类型说明符 (*函数名)(参数)

例如:int (*pf)(int x),它的意思就是声明一个函数指针,而pf=func,则将func函数首地址赋值给指针。

代码示例:

#include <stdio.h>#define NULL 0#define ASGN 1#define MUL 2 int asgn(int *a,int b){return *a = b;}int mul(int *a,int b){return *a*b;}int (*func(int op))(int *,int){switch(op)    {          case ASGN:        return &asgn;        case MUL:        return &mul;        default:        return NULL;    }    return NULL;} int main(){int i = 0xFFFD,j = 0xBEEF;printf("%x\n",func(ASGN)(&i,j));printf("%x\n",func(MUL)(&i,j));printf("%x,%x\n",i,j);return 0;}


输出结果:

beef

8e67a321

beef,beef

 

原创粉丝点击