C++ 中的引用(&)
概念
两个变量共用一块地址空间(就像给一个变量起了别名或是浅拷贝)
int a = 10;
int& b = a;
特点(与指针的区别)
- 引用被创建的同时必须被初始化(指针则可以任何时候被初始化);
- 不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL);
- 一旦引用被初始化,就不能改变引用关系(指针则可以随时改变所指的对象);
简单示例
#include <iostream>
int main()
{
int n = 100;
int x = 200;
// j 和 n 的地址一样,封装了指针
int &j = n;
j = x;
char* p = &x;// ×
// 地址转化 数据不会丢失,因为所占字节一致
char*p = (char*)malloc(sizeof(int));// √
std::cin.get();
return 0;
}
注:
- 不同类型的指针可以强转,但不会隐式转化;
- 地址转化不会发生数据的丢失,因为都是4个字节;