106.你什么情况用指针当参数,什么时候用引用,为什么?

发布时间 2023-07-11 15:53:03作者: CodeMagicianT

106.你什么情况用指针当参数,什么时候用引用,为什么?

1.使用引用参数的主要原因有两个

1.程序员能修改调用函数中的数据对象

2.通过传递引用而不是整个数据–对象,可以提高程序的运行速度

2.一般的原则

1.对于使用引用的值而不做修改的函数:

(1)如果数据对象很小,如内置数据类型或者小型结构,则按照值传递;

(2)如果数据对象是数组,则使用指针(唯一的选择),并且指针声明为指向const的指针;

(3)如果数据对象是较大的结构,则使用const指针或者引用,已提高程序的效率。这样可以节省结构所需的时间和空间;

(4)如果数据对象是类对象,则使用const引用(传递类对象参数的标准方式是按照引用传递);

2.对于修改函数中数据的函数:

(1)如果数据是内置数据类型,则使用指针

就为改变实参这个目的而言,指针对于引用的优势在于当你有可能需要传入一个空的概念*(尚未创立的对象,空指针可以表示,而引用无法表示空的概念)的时候

(2)如果数据对象是结构,则使用引用或者指针

(3)如果数据是类对象,则使用引用

(4)如果数据对象是结构。则使用指针或者引用。

也有一种说法认为:“如果数据对象是数组,则只能使用指针”,这是不对的,比如

template<typename T, int N>
void func(T (&a)[N])
{
    a[0] = 2;
}

int main()
{
    int a[] = { 1, 2, 3 };
    func(a);
    cout << a[0] << endl;
    return 0;
}

参考资料来源:

阿秀