在 CI 中已经注意到指针导致更快的程序执行。怎么可能,因为它必须在转到实际变量之前获取指针变量?
4 回答
指针不会导致更快的程序执行。智能算法可加快程序执行速度。有时,通过以正确的方式使用指针,算法可以变得更智能。指针永远不是用来解决问题以加快解决速度的魔杖。
指针只是一种设计范式,使用函数式编程根本不使用任何指针。
这不是真的。更快的程序执行的原因不是指针的可用性。这是您如何处理指针的问题。(可能)更快的程序执行源于 C 没有引入隐藏功能这一事实。
以字符串为例。其他语言中的常见实现在字符串中引入了一个长度字段,以跟踪字符串的长度。这种“簿记”(尽管对程序员隐藏)会导致执行额外的循环。
另一个例子是 C 不检查您要取消引用的指针是否有效。这种评估也会花费额外的周期。
C 标准没有指定任何所需的速度,因此将速度归因于 C 的特性是没有意义的。考虑到某些 C 实现产生的机器代码比其他实现更优,将速度归因于以下方面可能更有意义C 1的具体实现。不要混淆实现和规范。
1:为了对 C 的特定实现的速度进行有意义的比较,您可能想要提及您的操作系统(主要和次要版本)、您的编译器(主要和次要版本)、您的 CPU(型号)、主板、内存(模型和配置)和您使用的命令行参数。
虽然我知道这个问题的每个答案都来自比我在 C 方面知识渊博得多的人(实际上我不在我的联盟中)、IMVHO 和/或知识有限,但指针确实可以提高效率。
要回答 OP 的问题(并忽略有关程序执行和获取的其余部分):
指针如何提高程序效率?
通过避免数据重复。尽管这种效率可能仅在处理用户定义的变量“结构”时才显着。
这是我在 C 指针上找到的一篇不错的读物:Why C has Pointers