每个变量都住在内存里的一个“房间”,& 就是它的门牌号。
& 取出来;& 的两副面孔:取地址和引用。| 写法 | 含义 | 结果 |
|---|---|---|
&a | 取变量 a 的地址 | 一个十六进制数,如 0x7ffe... |
cout << &a | 把地址打印出来 | 内存中的位置 |
int 占 4 字节 | 每个变量占一块连续内存 | 4 个 byte |
& 就是找到它房间号的钥匙。& 有两副面孔:单独用是取地址(&a 得门牌号);跟在类型后面是引用(int &x 是别名)。看它在赋值号左边还是右边、前面有没有类型。内存=一排排快递柜,每个变量占一个(或几个)格子,& 告诉你它在第几柜第几格。
你要取件(读值)直接按格子取;要放新东西(赋值)也往那个格子里放——格子号(地址)本身和你存了什么无关,它只是定位信息。
这也像档案柜的编号:编号不决定档案内容,但所有查找都先要编号。理解“值与位置是两回事”,是学指针的第一步。
int a=5; cout << &a; 屏幕上显示的是?&a 取的是变量 a 的地址,不是它的值 5。地址用十六进制打印,看起来像 0x7ffe...。& 的两种身份,各举一个例子。
int *p = &a;(把 a 的门牌号存进指针);②引用:void f(int &x)(x 是实参的别名)。看 & 前面有没有类型、用在赋值左侧还是右侧。