网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

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语言函数指针调用格式
本文路径:http://bjjierui.cn/article/ddchiso.html

其他资讯