C++初学者咨询:`int &a = b;`与`int c = &d;`中`&`的区别及`int g = &h;`里`&h`的含义
关于C++中
&符号的两个问题解答 Hey there! Since you already get that int &e = f; makes e an alias for f, let's walk through your questions clearly:
1. int g = &h; 中 &h 的含义
这里的&是取地址运算符——它的作用是获取变量h在计算机内存中的实际地址。比如如果h是一个int变量,&h会返回一个int*类型的值(也就是指向int的指针),这个值是一串代表内存位置的十六进制数(比如0x7ffeefbff5ac)。
不过要注意:int g = &h;这行代码其实是编译错误的,因为你试图把一个指针类型的值直接赋值给普通的int变量,类型不匹配。正确的写法应该是int* g = &h;,这样g就变成了一个指向h的指针变量。
2. int &a = b; 与 int c = &d; 中&的区别
这两行里的&完全是两个不同的东西,属于C++里符号重载的典型例子:
- 在
int &a = b;中,&是引用声明符,它是变量类型的一部分(int&或者int &,空格不影响语法)。这行代码的意思是声明a为b的引用(别名),a和b共享同一块内存空间,修改a就等同于修改b。 - 在
int c = &d;中,&是取地址运算符,作为一元运算符使用,作用是获取d的内存地址,返回的是指针类型的值。同样,这行代码本身不合法,正确写法是int* c = &d;,让指针变量c存储d的地址。
一句话总结&的两种角色
- 当
&出现在变量声明的类型定义里:它是引用声明符,用来创建引用变量; - 当
&作为运算符作用在已有变量上:它是取地址运算符,用来获取变量的内存地址。
内容的提问来源于stack exchange,提问作者DeEterna
相关产品推荐
相关产品推荐

