99问答网
所有问题
C语言中,函数和函数指针,效率上差很多吗?
使用函数的时候,我用debug查看汇编码,用的是call 函数入口地址,用函数指针的汇编码为call si,其中si中存放的就是函数入口地址。
这两种形式上的,在效率上差别很大吗?
举报该问题
推荐答案 2012-06-21
1.直接调用函数,编译的时候,被调函数的地址(或偏移)直接写入指令;
2.使用函数指针时,运行期从内存中取地址,在使用call指令
理论上,这存在效率差异。
根据你的系统环境:服务器、PC还是嵌入式处理器、单片机等,及你的代码的时间敏感程度:如时序严格的驱动还是MS,等等因素,自己可以判断使用。还有一点需要强调:使用函数指针是为了获得某种灵活或模型(C++编译器内部大量使用函数指针),所以,这是一种平衡。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://99.wendadaohang.com/zd/eet7tjOWX.html
其他回答
第1个回答 2012-06-26
这个和你具体使用的编译器也有关系,如果使用优化程度很高的编译器,那么他们之间的效率差异就会很小。
第2个回答 2012-06-21
差别不会很大, 就是代码空间不同, 用函数指针会增大代码空间
相似回答
C语言中,指针函数和函数指针
有什么区别?
答:
在C语言中指针函数和函数指针是两个不同的概念,不能混淆
。指针函数本质上是函数,是一个返回类型为指针的函数,如:int* max(int *array,int n){ //找最大值的地址 return 最大值的地址;} max就是一个指针函数。而函数指针本质上是指针,是指向函数的指针,如:int (*funp)(int a,int b...
C语言中
调用
函数指针
占用哪里的存储空间,被调函数运行时内部变量存在...
答:
函数指针
指向一个函数的入口地址,也就是函数存储空间的首地址。在
C语言中,
数组名代表数组的首地址,同样函数名代表了函数的首地址,因此在赋值时,直接将函数指针指向函数名就行了。因此函数指针调用vs直接调用,占用的存储空间都是一样的。相当于数组指针和数组名的关系,指向的都是同一个数组。局部变...
C语言
指针
做
函数
参数 的优点
答:
这个答案当然是6 因为你传进去的是a的地址,所以在modify
函数
中的操作都是对a地址上的内容进行操作,即是操作a所以modify函数不用返回这个数,main中a的值也会改变。因为大家都是操作同一个内存空间,而上面不用
指针,
modify操作的是另一个新开辟的内存空间,只是这个内存空间初始值和a一样。现在来说说...
c语言指针和函数
的问题
答:
c语言指针和函数
的问题 在下面程序一中想利用swap函数交换主函数中两个指向a和b的
指针,
但是这样是不能实现的,因为函数的形参不能改变实参,所以主函数中的那两个指针是没变的;但是程序二中sort函数中有跟... 在下面程序一中想利用swap函数交换主函数中两个指向a和b 的指针,但是这样是不能实现的,因为函数的形参...
c语言
特点
答:
函数
、预处理命令、
指针
、结构体与共用体、文件、位运算。在编程领域
中,C语言
的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且
效率
显著。
c语言中函数
名就是
函数指针吗?
答:
是的。
c语言中, 函数
名也称为函数的
指针,
所以c语言中函数名就是一个指针。“
函数指针
”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的...
都说
c语言指针
功能强大,我怎么体会不到呢
答:
C语言
现在在大多数IT行业里认为是非主流的,因为大多数IT行业是互联网公司,多数用java等面向对象的语言,他们的重点不在速度不在
效率
。但是实际上C语言只是在大家不熟悉的地方使用,比如windows和linux的内核,比如通信行业的流传输。这些基本上都是C语言在搞,因为java之中面向对象的语言无法满足这些地方...
为什么
很多
人觉得
C语言
只要学会了
指针
基本
上差
不多掌握这门语言?
答:
指针
远远不是
C语言
的全部,只是在C语言学习道路上相对而言比较难理解的一块。毕竟从一个高级语言的角度去理解地址,比较抽象。作为一个高级语言,数据类型,流程控制
,函数
这些才是高级语言的重点。说差不多掌握这门语言,应该就是指的指针的难度,和学习的耗时。也对,也不对,学会指针只是入门了。位...
C语言中,
宏的运用
,和指针
作为
函数
参数的运用,两者有何区别。
答:
define max(a,b) ((a)>(b)?(a):(b),语句
c
= a > b? a, b,就可以使用 c = max(a,b)。又如,程序要多次使用 3.141592653,可以定义宏:#define PI 3.141592653,使用到3.141592653 的地方就用 PI 取代。
指针
作为函数参数,将内存地址传递给函数
,函数
可以操控这个指针指向的内存...
大家正在搜
c语言函数指针和指针函数
c语言指针数组和数组指针
c语言指向函数的指针
c语言函数参数为指针
c语言指针在函数中的用法
c语言函数名是指针吗
函数指针c语言
c语言函数指针的使用
c语言如何用指针调用函数