C++打印数组输出内存地址而非元素值,请问错误原因是什么?
嘿,我来帮你理清楚这个问题~
问题出在哪?
你现在看到内存地址的核心原因是:在C++里,数组名list会隐式转换成指向数组首元素的指针。当你直接用std::cout输出这个指针时,它自然会打印出数组在内存中的起始地址,而不是你期望的元素值。
怎么修正?
你需要明确访问数组的具体元素,也就是用list[i]来输出当前循环里的元素,而不是直接输出数组名。修正后的代码是这样的:
int main() { int list[3]; for (int i=0; i<3; i++) { list[i] = i; std::cout << list[i] << std::endl; } }
运行这段代码后,你就能得到想要的输出:
0 1 2
如果你想一次性输出整个数组的所有元素,还可以用C++11及以上支持的范围for循环,代码更简洁:
int main() { int list[3]; for (int i=0; i<3; i++) { list[i] = i; } // 遍历数组所有元素并输出 for (int num : list) { std::cout << num << std::endl; } }
内容的提问来源于stack exchange,提问作者user1779646
相关产品推荐
相关产品推荐

