我们在cpp中打印数组的价值是多少?
我是 C++ 的初学者,我在我的代码中写了这个:
int *ptr;
int arr[4] = {1, 2, 3, 4};
cout << arr << endl;
这输出到'0x61ff00'。值是什么意思?谢谢!
回答
数组没有标准重载。然而, 存在过载const void*。该数组衰减为指向第一个元素的指针,该指针进一步隐式转换为const void*。结果是作为const void*对象值的地址的实现定义的文本表示。
内存地址本质上是数字。0x 是十六进制数的前缀。
以下不适用于示例,但适用于其他一些数组:如果数组元素为char,则字符流的行为不同,因为const char*. 在这种情况下,行为是将数组视为空终止字符串,结果是数组中包含的字符串。字符串文字是char.
例子:
std::cout << "Hello, World!";
输出:
Hello, World!
如果数组不包含空终止符,则程序的行为未定义。永远不要将这样的数组插入到字符流中。