c语言动态调用函数指针 c语言函数指针调用格式

C语言 函数指针 的调用问题?函数指针 怎么用?最好有例子。。

#includestdio.h

创新互联-专业网站定制、快速模板网站建设、高性价比洛江网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式洛江网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖洛江地区。费用合理售后完善,十余年实体公司更值得信赖。

//定义类型fun_ptr,它是一个函数指针,指向的函数返回值为int,参数为int

typedef int (*fun_ptr)(int);

//fun1

int fun1(int a)

{

printf("call fun1,pram=%d,return %d+1\n", a, a);

return a+1;

}

//fun2

int fun2(int a)

{

printf("call fun2,pram=%d,return %d+2\n", a, a);

return a+2;

}

int main(int argc, char *argv[])

{

int a = 10;

int s = 0;

//定义函数指针类型的变量p_fun

fun_ptr p_fun;

//指向fun1

p_fun = fun1;

//执行

s=p_fun(a);

printf("s=%d\n", s);

//指向fun2

p_fun = fun2;

//执行

s=p_fun(a);

printf("s=%d\n", s);

return 0;

}

执行结果:

C语言中调用函数指针占用哪里的存储空间,被调函数运行时内部变量存在哪里,和直接调用函数有什么区别?

在程序运行时,一个函数占用一段连续的内存。当调用一个函数时,实际上是跳转到函数的入口地址,执行函数体的代码,完成后返回。

函数指针指向一个函数的入口地址,也就是函数存储空间的首地址。

在C语言中,数组名代表数组的首地址,同样函数名代表了函数的首地址,因此在赋值时,直接将函数指针指向函数名就行了。

因此函数指针调用vs直接调用,占用的存储空间都是一样的。相当于数组指针和数组名的关系,指向的都是同一个数组。

局部变量存在函数体里面,比如转换成8086汇编(示意):

func: 定义变量

push ax

pop ax

ret

main: call func

满意请采纳,谢谢!

C语言调用函数指针

并不是不规范的问题,你子程序写法只能在子程序中输出正确的数据,而在主函数中无法得到交换过的x和y的值。参考程序运用指针让子程序去读写a和b的值,在子程序执行完成后,a和b的值确实得到了交换。

你的程序中子程序采用的不是指针类型参数,这样子程序无法将交换过后的值传回来。

网站名称:c语言动态调用函数指针 c语言函数指针调用格式
文章起源:https://www.cdcxhl.com/article30/ddchiso.html

成都网站建设公司_创新互联,为您提供营销型网站建设做网站品牌网站制作网页设计公司虚拟主机网站制作

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站建设