【问题标题】:CPP , creating array and i see only one parameterCPP,创建数组,我只看到一个参数
【发布时间】:2020-08-12 17:50:40
【问题描述】:

我创建了一个包含 3 个数字的数组; 我只看到一个数字而不是 3

int *ArrayA;
ArrayA = new int[3];
ArrayA[0] = 2;
ArrayA[1] = 4;
ArrayA[2] = 6;

当我调试并关注 ArrayA 时,我只看到 2 个; 可能是什么问题?

【问题讨论】:

  • 请发送minimal reproducible example。例如你是如何打印这些值的?
  • 如果您在调试器中查看它,调试器完全不知道ArrayA 指向数组的第一个元素。
  • 你用的是什么调试器?如果你使用 VS,这里是dupe
  • 如果您使用 Visual Studio 调试器,您可以指定要在监视窗口中显示多少元素:ArrayA, 3 将显示 3 个元素。

标签: c++


【解决方案1】:

您的对象ArrayA 的类型为int *。因此它指向一个int。您将它指向int[3] 数组这一事实并没有改变这一事实。您的调试器也无法猜测您希望它显示多个值。


通常建议使用std::array,而不是使用原始 c 样式数组。

std::array<int,3> arrayA = {2,4,6};

【讨论】:

  • 如果您的大小不总是3,请考虑使用std::vector。因为您可以将尺寸更改为您需要的任何尺寸(当然是在合理范围内)。
【解决方案2】:

这不是问题。正如预期的那样,因为ArrayA 是一个指针。所以指针基地址和数组第一个元素的地址是一样的。因此,您总是会在调试器中看到2。不确定您使用的是哪个调试器,您可以尝试添加ArrayA[index]*(ArrayA + index),然后您也可以看到其他值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 2021-03-10
    相关资源
    最近更新 更多