首页 百科知识 指针与函数

指针与函数

时间:2022-10-16 百科知识 版权反馈
【摘要】:指向函数的入口地址的指针就称为函数指针。与指针变量相似,函数指针可以间接地访问一个函数。改变函数指针的指向,可以使用该函数指针访问其他函数,丰富了访问函数的手段,增强了访问函数的灵活性。需要注意的是,函数指针应具有和它指向函数相同的函数返回类型和相同的参数列表。函数max实现求三个参数最大值的功能,主函数中指针变量p存储max函数返回的最大值地址,*p输出其指向的最大值。

6.2 指针与函数

6.2.1 指向函数的指针

函数在程序编译时被分配了一个入口地址。指向函数的入口地址的指针就称为函数指针。与指针变量相似,函数指针可以间接地访问一个函数。改变函数指针的指向,可以使用该函数指针访问其他函数,丰富了访问函数的手段,增强了访问函数的灵活性。需要注意的是,函数指针应具有和它指向函数相同的函数返回类型和相同的参数列表。

定义函数指针形式:

指向函数的返回数据类型(*函数指针名)(指向函数的参数列表);

例如,有两个函数max和min,一个函数指针pf,如下所示:

int max(int,int);

int min(int,int);

int(*pf)(int,int);

使用函数指针pf指向函数max,调用函数指针pf,等价于访问函数max,如下所示:

pf=max;

num=(*pf)(a,b);

改变函数指针pf的指向函数min,等价于访问函数min,如下所示:

pf=min;

num=(*pf)(a,b);

【例6.4】使用指向函数的指针分别指向求最大值函数和求最小值函数,完成求解。

img231

img232

运行结果如图6-7所示。

img233

图6-7

分析:

函数指针pf与函数max、函数min具有相同的返回数据类型和参数列表,使用函数指针pf可以间接地访问函数max和函数min。因为函数指针pf的指向不同,相同的代码c=(*pf)(a,b)实现了不同函数的功能,便于代码的移植。

6.2.2 返回指针的函数

函数可以返回整型、字符型、浮点型等数据,也可以返回指针型的数据,这称为返回指针值的函数。

定义形式为:

类型名*函数名(参数列表);

例如,函数max调用后返回值的数据类型是整型指针:

int*max(int*x,int*y);

【例6.5】使用返回指针的函数,求三个数中的最大值。

代码如下:

img234

img235

运行结果如图6-8所示。

img236

图6-8

分析:

函数max实现求三个参数最大值的功能,主函数中指针变量p存储max函数返回的最大值地址,*p输出其指向的最大值。函数max使用指针访问实参a、b和c的值,经过比较,max函数返回最大值的地址,其中函数max返回的数据类型是指向整型变量的指针类型,p是指针变量,三者一致,都是整型指针。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈