空指针引用可以传递值
今天写代码,碰到一个 空指针引用可以传递值 。 想了很久,终于想通了。
代码如下:
void insert( int* &par)
{
par = new int(5); //可以把存储5的地址传出去
}
int *p = NULL;
insert(p);
//数组某个元素,取地址, 这个地址变量是不能作为引用的实参的。
代码如下:
void insert( int* &par)
{
par = 5;
}
int a[5] = {1, 2, 3, 4, 5};
insert(&a[0]); //这里编译报错。invalid initialization of non-const reference of type 'Node*&' from an rvalue of type 'int*'
// 虽然 &a[0] 是 int * 类型的, 但它是 a[0] 的地址。 引用是某个存在的变量的别名, 这里的 地址 不是 真实存在的变量。