我在JavaScript中最喜欢做的事情之一是使用多维数组。我决定学习C ++,我想尝试使用数组来帮助我学习它。我制作了我的第一个C ++程序,将多维数组转换为基于文本的表。这是非常复杂的,花了我几个小时来弄清楚,主要是因为JavaScript中的数组与C ++中的数组有很大不同。我的程序会变成这样的数组:
int a[5][4] = {{44,0,1, 55555555}, {144,2,44444, 67}, {2,444,6, 99}, {3,44,7, 2}, {4,8,9444, 1000}};
进入这个:
--------------------------------
| 44 | 0 | 1 | 55555555 |
|-----+-----+-------+----------|
| 144 | 2 | 44444 | 67 |
|-----+-----+-------+----------|
| 2 | 444 | 6 | 99 |
|-----+-----+-------+----------|
| 3 | 44 | 7 | 2 |
|-----+-----+-------+----------|
| 4 | 8 | 9444 | 1000 |
|------------------------------|
令我困惑的是,当我没有初始化我的数组时,例如int a[5][4];
,我的表格如下:
-------------------------------------------
| 1 | 0 | 1606416280 | 32767 |
|------------+-------+------------+-------|
| 0 | 1 | 0 | 0 |
|------------+-------+------------+-------|
| 1606416296 | 32767 | 0 | 0 |
|------------+-------+------------+-------|
| 0 | 0 | 0 | 0 |
|------------+-------+------------+-------|
| 0 | 0 | 0 | 0 |
|-----------------------------------------|
这些随机数来自哪里?
注意:这些数字不是来自我的代码,因为当我创建一个新项目并只添加数组int a[5][4]
然后cout << a[0][2];
的声明时,我得到了数字1606416280
在控制台中。
答案 0 :(得分:1)
在C ++中,堆栈变量未初始化,因此您输出的数字是之前存储在该内存地址的任何值(某些随机垃圾值)。
答案 1 :(得分:0)
打印未初始化的变量正在调用未定义的行为。用你自己的话说:
这些数字不是来自我的代码
你是对的 - 它们是垃圾值。要克服,您必须分配一些值,然后打印出这些值。但是,请注意,全局变量始终初始化为0,如in this SO question.
所指出的那样答案 2 :(得分:0)
令我困惑的是,当我没有初始化我的数组时,例如INT a [5] [4];,我的表格如下:
在C / C ++中,非初始化的内存区域被视为垃圾。你打印了一个非初始化的内存区域,即你打印垃圾。