首页 > 编程知识 正文

指针函数和函数指针的定义,指向函数的指针有什么用

时间:2023-05-06 13:35:52 阅读:61805 作者:2990

指针函数和函数指针的区别

一,

在学习arm的过程中,我发现这个“指针函数”和“函数指针”很容易出错,所以今天我想自己把它弄清楚一次,就找了资料。 首先,它们之间的定义:

1、指针函数是指带有指针的函数。 也就是说,本质是函数。 函数的返回类型是指针的类型

类型标识符*函数名称(参数表) int ) f ) x,y ); 首先是函数,但是这个函数的返回值是地址值。 函数的返回值必须由同一类型的指针变量接受。 也就是说,指针函数必须具有函数的返回值,并且在度量函数中,函数的返回值必须分配给相同类型的指针变量。

显示:

浮动* Fun (;

浮动* p;

p=fun(a;

请注意指针函数和函数指针表示方式的差异。 请不要混淆。 最简单的区分方法是,查看函数名称前面的指针*编号是否括在括号()中。 如果包含,则为函数指针,反之为指针函数。

详细地说吧! 请看以下内容

指针函数:

当函数声明返回值为指针时,它将在调用函数中返回地址,以便在实际需要指针或地址的表达式中使用。

格式:

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

当然,因为返回地址,所以类型说明符通常是int。

例如,int *GetDate (;

int*AAA(int,int );

函数常用于返回地址值和返回数组的元素地址。

int*getdate(intwk,int dy ); main () { int wk,dy; o { printf (输入week (1-5) day )1-7)n; 扫描(% d % d,wk,dy ); }while(wk1|||wk5||dy1|||dy7 ); printf(%d(n,*getdate ) wk,dy ); }int*getdate(intwk,int dy ) staticintcalendar(5) (7)={ 1,2,3,4,5,6,7 },{ 8,9,10,11,12,rettd }程序应该很好理解。 子函数返回数组中某个元素的地址。 输出的是这个地址的值。 2、函数指针是指向函数的指针变量,即本质上是指针变量。

int(f ) ) int x; /声明函数指针*

f=func; /*指针f */

指向函数的指针包含函数的地址,可以调用该函数。 声明的格式如下:

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

其实这里不能叫函数名,应该叫指针的变量名。 此特殊指针指向返回整数值的函数。 指针的声明钢笔和对函数的声明是一致的。

指针名称和指针运算符外部的括号会更改默认运算符的优先级。 如果没有圆括号,它将是返回整数指针的函数的原型声明。

例如:

void(*FPTR ) );

有两种形式可以将函数的地址分配给函数指针:

fptr=Function;

fptr=Function;

地址运算符不是必需的。 因为只有一个函数标识符表示地址,并且对于函数调用,必须包含用括号括起来的参数表。

有两种从指针调用函数的方法:

x=(*fptr ();

x=fptr (;

第二种格式看起来和函数调用一样。 但是,一些程序员倾向于使用第一种格式,因为他们清楚地表明要用指针而不是函数名称来调用函数。 举个例子吧。

语音(*功能) ); 语音文件功能(,EditFunc ); main () { funcp=FileFunc; (*funcp ) ); funcp=EditFunc; (*funcp ) ); } Void文件func () printf )文件func (n; } void EditFunc () printf ) Editfunc(n ); }文件函数编辑函数的主要区别在于程序输出是指针变量,而另一个是函数。 使用时必须弄清楚才能正确使用

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。