引用和指针的区别
概念
引用是别名。
注意事项
- 引用被创建的时候必须立刻初始化;
- 不能有NULL引用;
- 被初始化后就不能改变引用关系。对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 协议 ,转载请注明出处!