为何对数组元素执行&操作输出地址而非值?我以为引用访问元素值
为什么&array[0]输出的是地址而非元素值?
你这里搞错了C++里&的两种不同用法:
- 一种是引用声明,比如写
int& ref = array[0];,这时候ref是array[0]的别名,访问ref就是直接拿元素值。 - 另一种是取地址运算符,就是你代码里的
&array[0]——这个符号在这里的作用是获取array[0]这个元素在内存里的存储地址,而不是读取它的值。
拆解你的代码:
array[0]本身确实是数组的第一个元素,值是1。- 但前面加了
&之后,就把这个元素转换成了它的内存地址,所以std::cout会输出一串代表内存位置的十六进制数(比如0x7ffeefbff5c0)。
如果想输出元素值,直接写array[0]就行;或者你也可以用*&array[0]——先用&取地址,再用*解引用,也能得到元素值1。
内容的提问来源于stack exchange,提问作者kvrier
相关产品推荐
相关产品推荐

