在C语言里,我们碰到过“&”这个符号。“&”的使用场景有两种: (1)位运算符
int a = 5;
int b = 10;
int c = a & b;
(2)取地址符
int a;
scanf("%d", &a);
在C++里,“&”的使用场景有三种: (1)位运算符,这在C, C++, Java等语言中,都是一样的
(2)取地址符,这是因为C++兼容了C
#include <iostream>
using namespace std;
int main()
{
int a;
printf("Input a = ");
scanf("%d", &a);
printf("a = %d", a);
return 0;
}
(3)作为引用 这是C++中加入的新语言特性。 所谓引用,就是变量的别名。 比如有一个人叫做Teodoro,他有一个外号叫做“小朋友”,那么“小朋友”就是Teodoro的引用。别人说“小朋友”或Teodoro,说的都是同一个人。
引用的语法为:类型 &引用名 = 变量名 比如
int a;
int &ra = a;
操作引用,就是操作变量本身。 例子:
#include <iostream>
using namespace std;
int main()
{
int a;
int &ra = a;
ra = 1;
printf("Memory address of ra: %d\n", &ra);
printf("Memory address of a: %d\n", &a);
printf("ra = %d\n", ra);
printf("a = %d\n", a);
return 0;
}
运行结果:
Memory address of ra: 2293316
Memory address of a: 2293316
ra = 1
a = 1
可见,ra和a的内存地址是一样的,值自然也一样。ra和a实际上是同一回事。