⑴ c语言中,函数和函数指针,效率上差很多吗
1.直接调用函数,编译的时候,被调函数的地址(或偏移)直接写入指令;
2.使用函数指针时,运行期从内存中取地址,在使用call指令
理论上,这存在效率差异。
根据你的系统环境:服务器、PC还是嵌入式处理器、单片机等,及你的代码的时间敏感程度:如时序严格的驱动还是MS,等等因素,自己可以判断使用。还有一点需要强调:使用函数指针是为了获得某种灵活或模型(C++编译器内部大量使用函数指针),所以,这是一种平衡。
⑵ C语言用指针变量去修改变量的值比变量直接赋值效率高吗
对于你的例子,是否使用指针效率是一样的,没有区别。
指针的高效简洁体现在对复杂对象的操作上,
高效,比如传递一个类,如果使用地址传递,实际上只传递一个int大小的地址,而对象传递,则需要大量的内存空间复制一个临时对象。
简洁,体现在代码的灵活上,也不是针对单一的简单数据类型操作,今后的编程中,你经常可以看到类似这样的语句:while(*p++) {...} 代码比不使用指针要简洁。
⑶ c语言用指针比较快是不是因为直接访问寻找变量需要的时间比较多 而指针直接从地址访问就不用寻址费时了
用指针不是减少了寻址的时间,是省略了计算地址的步骤,要做的工作少了,所以说速度快。
用指针比较快,这个概念有点过时了。现在的编译器,代码优化的效率是很高的,在设定高优化级别的情况下,两者几乎没有差别。另一方面,使用指针编程相对复杂,更容易导致潜在的错误,就软件工程的角度来看,牺牲可靠性来换取速度的小量提升(甚至速度没有提升)是划算的。
结论,减少指针的使用,使用索引就很好。要想提升执行速度,编译的时候把优先级别设的高一点就可以了。
⑷ 如何提高C语言程序运行效率
最主要的措施就是改进算法,如控制循环次数;多使用中间结果,减少运算次数等。
此外还可以从程序设计技术角度采取一些措施:如尽量减少值传递,多用引用来传递参数;减少减少除法运算;多用局部变量等。
⑸ c语言中用指针的好处有哪些
指针非常的好,它把相同的事物归类,然后把事物做出标记,避免给相同的特点做变量。比如说你和你同学,你们两个人都有心脏、肝、肺等器官,如果命名心脏1、心脏2这样比较麻烦,这时如果用上指针,指向你说心脏时说的是你的心脏,指向你同学时说的是你同学的心脏,如果人非常的多,你不用指针,那么命名心脏1、2、3、4、5.。。。那是非常的多的不必要的变量。我现在运用PLC和WINCC连接时有的时候就用指针。节省了通讯时间,省略了很多的变量。
⑹ 为什么说c语言指针比没有指针调用数据快呢
从通俗意义上讲,说指针的操作速度快是因为,我们只需要操作指针变量,而不用去具体的操作指针变量所指向的数据,这就是基本原理。具体的要针对具体的例子来说明了。
⑺ C语言 为什么用指针变量效率较高
指针变量是有加减运算的,但是要注意以下几点:
1.指针变量中存放的是地址值,也就是一个数字地址,例如某指针变量中的值是0x20000000,表示表示此指针变量存放的是内存中位于0x20000000地方的内存地址。指针变量可以加减,但是只能与整型数据加减,此时加减的含义并不是其地址值进行了加减,也就是说如果指针变量p的值是0x20000000,那么p=p+2;的值并不是0x20000002,并不是地址值的简单相加,那么地址值加减多少是与指针指向的数据类型相关联的,如果在32位的操作系统上,p是指向整型数据的指针变量,那么p=p+2之后,p的地址值变成0x20000008,也就说实际上地址值加了多少呢:sizeof(int)*2这么多。说明白点,我们加减的数字是以指针指向的数据类型为量度的,P+2表示p在内存中前移两个int的距离,如果p不是int类型,而是其他类型道理也是一样。同样指针与整型数据相减也是同样的道理。
2.指针之间可以相减,但不可以相加:两个同一类型的指针变量是可以相减的,他们的意义表示两个指针指向的内存位置之间相隔多少个元素(注意是元素,并不是字节数),例如对于int类型的指针p和p1. p1-p的意义表示他们之间相隔多少个int类型的元素。同样对于其他类型的指针变量之间相减的意义也是一样。 指针变量的自加和自减实际上是与整数1的加减运算。
3.指针之间可以比较大小。但是同样也限于两个相同类型的指针变量,不同类型的指针变量之间比较大小没有任何意义。指针之间的大小比较的意义,表示在内存中他们指向的位置的高低关系。
如果还没解决你的问题,可以加我网络HI账号。