有没有人可以用外行的术语向我解释为什么我的引用正在更新它所引用的元素数组?我认为引用的全部意义只是引用一个值。
#include <iostream>
int main() {
int arr[4] = { 0,0,0,0 };
arr[0] = 1;
int& reference = arr[0];
reference = 2;
std::cout << arr[0];
}
通俗地说,按要求:
引用和指针基本上是一样的,主要的区别是引用不能是null
,并且在使用它们时简化了语法。
数组变量也是指针。arr
是指向数组开头的指针,arr[1]
是指向第二个元素的指针,这和arr + 1
是一样的。
当你执行int& reference = arr[0]
时,你将reference
指定为指向数组的第一个元素。当你调用reference = 2
时,它的含义与你调用arr[0]=2
或
int * pointer = arr + 0;
*pointer = 2;