考虑使用指针传递的 C++ 中这个交换函数的简单测试。
#include <iostream>
using std::cout;
using std::endl;
void swap_ints(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
return;
}
int main(void)
{
int a = 1;
int b = 0;
cout << "a = " << a << "\t" << "b = " << b << "\n\n";
swap_ints(&a, &b);
cout << "a = " << a << "\t" << "b = " << b << endl;
return 0;
}
这个程序是否比我按地址传递时使用更多的内存?比如在这个函数 decleration 中:
void swap_ints(int &a, int &b)
{
int temp = a;
a = b;
b = temp;
return;
}
通过不需要创建指针变量,这个 C++ 函数的按引用传递版本是否使用更少的内存?
并且 C 不具有与 C++ 相同的“按引用传递”能力吗?如果是这样,那为什么不呢,因为这意味着内存效率更高的代码,对吧?如果不是,那么 C 不采用这种能力的原因是什么。我想我没有考虑的是 C++ 可能会创建指针以在幕后实现此功能。这就是编译器实际上所做的——所以除了更简洁的代码之外,C++ 真的没有任何真正的优势吗?