Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 与;函数参数中的和*_C++ - Fatal编程技术网

C++ 与;函数参数中的和*

C++ 与;函数参数中的和*,c++,C++,可能重复: 使用C++,我想知道在参数中使用和和*有什么不同? 例如: void swap(int &a, int &b) { int temp = a; a = b; b = temp; } 这显然会交换a和b的整数。但是下面的函数不是也会这样做吗 void swap(int *a, int *b) { int temp = *b; *b = *a; *a = temp; } 我只是想知道什么时候使用每一种方法是合适的,也许

可能重复:

使用C++,我想知道在参数中使用和和*有什么不同?

例如:

void swap(int &a, int &b)
{
    int temp = a;
    a = b;
    b = temp;
}
这显然会交换a和b的整数。但是下面的函数不是也会这样做吗

void swap(int *a, int *b)
{
    int temp = *b;
    *b = *a;
    *a = temp;
}

我只是想知道什么时候使用每一种方法是合适的,也许还有每一种方法的优点

指针和引用之间的区别在于指针可以指向“nothing”,而引用不能。您的第二个示例在取消引用之前应该为空检查指针;引用不需要这样做。

通常的座右铭是“可以使用引用,必要时使用指针”。此外,请参阅和。实际上,可以遵循的一个良好编码实践是输入参数(您不想复制)应该是常量引用,而不是指针,输出可以是指针。这样,您就不必检查输入参数是否为null,若有任何问题,那个么函数的调用者需要处理这些问题