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

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

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

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

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

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

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

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

代码示例:

#include 
#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

 

你可能感兴趣的:(面试笔试题,函数,指针,class)