引用和指针的区别

概念

引用是别名。

注意事项

  1. 引用被创建的时候必须立刻初始化
  2. 不能有NULL引用
  3. 被初始化后就不能改变引用关系。对n的操作就是对m的操作。不是拷贝,不是指针,n就是m。
int m; 
int &n = m;

值传递/指针传递/引用传递 的异同

由于 Func1 函数体内的 x 是外部变量 n 的一份拷贝,改变 x 的值不会影响 n, 所以 n 的值仍然是 0。

void Func1(int x) 
{ 
    x = x + 10; 
} 
int n = 0; 
Func1(n); 
cout << "n = " << n << endl; // n = 0

以下是”指针传递”的示例程序。

由于 Func2 函数体内的 x 是指向外部变量 n 的指针,改变该指针的内容将导致 n 的值改变,所以 n 的值成为 10。

void Func2(int *x) 
{ 
    (* x) = (* x) + 10; 
} 
int n = 0; 
Func2(&n);// 取指针
cout << "n = " << n << endl; // n = 10

以下是”引用传递”的示例程序。

由于 Func3 函数体内的 x 是外部变量 n 的引用,x 和 n 是同一个东西,改变 x 等于改变 n,所以 n 的值成为 10。

void Func3(int &x) 
{ 
    x = x + 10; 
} 

int n = 0; 
Func3(n); 
cout << "n = " << n << endl; // n = 10

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!