C++ 为什么要打印内存地址而不是c+;中的数组值+;
当我试图打印数组的值时,它的内存位置将被打印,而不是打印值。我做错了什么C++ 为什么要打印内存地址而不是c+;中的数组值+;,c++,arrays,C++,Arrays,当我试图打印数组的值时,它的内存位置将被打印,而不是打印值。我做错了什么 int main() { int list[3]; for (int i=0; i<3; i++) { list[i] = i; std::cout<<list<<std::endl; } } intmain() { 国际清单[3]; for(int i=0;iC++在使用iostream库时不为数组提供重载。如果要
int main()
{
int list[3];
for (int i=0; i<3; i++)
{
list[i] = i;
std::cout<<list<<std::endl;
}
}
intmain()
{
国际清单[3];
for(int i=0;iC++在使用iostream库时不为数组提供重载。如果要打印数组的值,需要编写函数或查找其他人编写的函数
在幕后发生的事情是list
正在衰减为int*
,这就是您看到的打印内容。C++在使用iostream库时不会为数组提供重载。如果您想打印数组的值,您需要编写一个函数或查找其他人编写的函数
引擎盖下发生的是列表
正在衰减为int*
,这就是您看到的打印内容。这看起来像是一个印刷错误:
std::cout << list
std::cout这看起来像是一个印刷错误:
std::cout << list
<代码> STD::CUT不能像PU一样在Python中打印整个数组(列表、类等)(尽管也有办法),但是这里发生的是C++中的数组实际上是一个指向该类型的指针(在你的例子中是代码> int <代码>)通过打印<代码>列表>代码>实际上,您试图打印指针的内存地址,因此输出。< /P> < P>您不能像Python中的UO那样同时打印整个数组(列表、类等)(尽管也有办法),但是这里所发生的是C++中的数组实际上是指向类型的指针。(在您的情况下,
int
)通过打印<代码>列表>代码>实际上,你要打印指针的内存地址,因此输出你得到的。< /p> <代码>:ST::CUD>代码> STD::CUT C++中的数组只是一个数组。指针是C++中的一种不同类型。所有的内容都会越来越错误。这只是在C++ SIMP中请求一个-1数组。LY是一个数组。指针是C++中的一种不同类型。接下来的每一项都变得越来越错误。这实际上只是乞求一个-1。
std::cout << list << std::endl;
template <std::size_t N>
std::ostream& operator<<(std::ostream& out, int (&arr)[N]) {
std::copy(std::begin(arr), std::end(arr), std::ostream_iterator<int>{out, ", "});
return out;
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
std::cout << arr << std::endl; // Ok, prints "1, 2, 3, 4, 5, ".
}