首页 > 编程知识 正文

c语言结构体数组,C语言指向函数的指针

时间:2023-05-06 13:26:36 阅读:61868 作者:2695

指针函数一般是指返回指针的函数

#包含

int*fun(int*a ) )

{

返回a;

}

(intmain(intargc,char **argv ) ) ) ) ) ) ) )。

{

int a=3;

printf('%d ',* ) fun ) ) a );

返回0;

}

函数指针是指示函数起始地址的指针。

首先,需要了解函数的调用步骤。

#包含

intfun(intI ) )。

{

返回I 1;

}

(intmain(intargc,char **argv ) ) ) ) ) ) ) )。

{

int r;

//r=fun(5;

r=((fun ) ) 5; //调用方式

printf(%d(n ),r );

返回0;

}

函数为r=(*fun ()5); 调用以指示函数名称是指针。

用(fun )指定地址。 可以定义指针

#包含

intfun(intI ) )。

{

返回I 1;

}

(intmain(intargc,char **argv ) ) ) ) ) ) ) )。

{

int r;

int(*funp ) ) int; //声明指针

//funP=fun; //为指针赋值

funP=fun;

r=funp(5;

printf(%d(n ),r );

返回0;

}

因此,为函数指针赋值也有两种方法

同样,通过函数指针调用函数的方法也有两种。

#包含

intfun(intI ) )。

{

返回I 1;

}

(intmain(intargc,char **argv ) ) ) ) ) ) ) )。

{

int r;

int(*funp ) ) int; //声明指针

funP=fun; //为指针赋值

//r=funp(5;

r=((funp ) ) 5; //调用

printf(%d(n ),r );

返回0;

}

也就是说,fun ()和() fun ) )的作用相同,但声明的地方除外。

这样,c语言就更容易实现类似回调函数的结构。

#包含

intfuna(intI ) )。

{

返回I 1;

}

intfunb(intI ) )。

{

返回I-1;

}

voidfun(int(*funp ) ) int ),int i ) )。

{

printf('%dn ',funP(i ) ) I );

}

(intmain(intargc,char **argv ) ) ) ) ) ) ) )。

{

int(*funp ) ) int; //声明指针

funP=funA; //为指针赋值

//funP=funB; //为指针赋值

fun(funp,5 ); //调用

返回0;

}

fun ) )函数中,在某个时候只调用funP指针指向的函数,在fun函数的定义中还不知道是哪个函数。 在将funA分配给函数指针funP之前,funP不确定具体具有什么功能。

也就是说,main函数确定fun函数需要实现什么样的函数代码,但fun ()决定何时调用fun以及main是否调用他的函数。

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