c++ - 多维数组打印十六进制数字而不是数组的内容
问题描述
我在玩多维数组,想知道这段代码发生了什么,使它打印出十六进制而不是数组的实际内容。我知道这可能是一个愚蠢的问题,但希望有人能解释一下这是我第一年的编程。
#include <iostream>
void print(int A[][3],int N, int M)
{
for (int R = 0; R < N; R++) // Why when executed does this code output:
for(int i = 0; i < 4; i++) //0x61fdf0 0x61fdf0 0x61fdf0 0x61fdf0
std::cout << A[R] << " "; //0x61fdfc 0x61fdfc 0x61fdfc 0x61fdfc
for (int C = 0; C < M; C++) //0x61fe08 0x61fe08 0x61fe08 0x61fe08
for(int j = 0; j < 3; j++) //0x61fe14 0x61fe14 0x61fe14 0x61fe14
std::cout << A[C] << " "; //0x61fdf0 0x61fdf0 0x61fdf0 0x61fdfc
} //0x61fdfc 0x61fdfc 0x61fe08 0x61fe08 0x61fe08
int main ()
{
int arr[4][3] ={{12, 29, 11},
{25, 25, 13},
{24, 64, 67},
{11, 18, 14}};
print(arr,4,3);
return 0;
}
解决方案
如果你有一个像 的二维数组int arr[4][3]
,那么arr
本质上只是一个指向整个二维数组的内存地址。
同样,arr[X]
也是一个指向二维数组的一行的地址。所以打印:
std::cout << arr;
std::cout << arr[1];
将打印一个内存地址,该地址仅在屏幕上显示为十六进制数字。
要获取底层int
,您需要指定的两个索引arr
,如下所示:
std::cout << arr[1][1]; // prints an int
当然,同样的事情也适用A
于你的功能。
推荐阅读
- php - 为什么 Laravel Auth::attempt 方法不起作用?
- c# - 来自 FrameworkElementFactory 类型组合框的 Interaction.GetBehaviors
- c# - 引导菜单下拉菜单不起作用 ASP.NET
- php - 跨变量调用PHP中的静态方法
- r - “model.frame.default(数据=火车,公式=成本〜。)中的错误:可变长度不同”,但所有变量的长度都是76?
- jenkins - open shift 找不到 buildconfig
- css - WordPress,在标签中或标签内转义 CSS 属性值
- android - 从扫描仪接收数据 [kotlin 代码] 并通过 MethodChannel 将其发送到 Flutter
- static-linking - 为什么不能静态链接动态库?
- multithreading - ActiveMQ 消费者未收到所需数量的消息