C语言 内置类型的常量指针传递与值传递.效率



当我试图找到答案时,我几乎只找到C++帖子而不是C。

对于 int、char 等内置类型,按值传递和按常量指针传递之间是否存在任何性能差异?

在按值传递时使用 const 关键字是否仍然是良好的编程习惯?

int PassByValue(int value)
{
    return value / 2;
}
int ConstPointer(const int * value)
{
    return (*value) / 2;
}

只要值小于或等于指针的大小(sizeof),通过常量指针传递永远不会比按值传递快。它也更烦人,有时甚至是错误的(堆栈变量)。

一般来说,按值传递应该更快。事实上,该值可能已经在寄存器中,在这种情况下,访问缓存就不需要了。但是,如果函数代码与调用方代码一起编译,则编译器无论如何都可能会进行优化。

通过指针传递 int、char 等内置类型不会产生更好的性能结果。

使用 const 关键字按值传递无关紧要,因为原始值不会更改。

最新更新