【问题标题】:C++ 2d array index errorC++ 2d 数组索引错误
【发布时间】:2015-11-27 08:36:36
【问题描述】:

我有一个关于二维数组索引的问题。这里 player_board 被声明为一个指向 char 的双指针,它是一个二维数组。然后我分配内存,一切似乎都很好。 x_vals 和 y_vals 是存储 x 坐标和 y 坐标的两个向量。我正在尝试用“A”替换给定 x、y 值的原始值。当我打印出 x_vals 和 y_vals 的元素时,它看起来很好,但是当我将它们用作索引时,它们开始随机分配。这是我的代码......我应该如何解决这个问题?感谢您的帮助

for(unsigned int i = 0; i < x_vals.size(); i++) {
    cout << x_vals.at(i) - 48 << y_vals.at(i) - 48 << endl;
    player_board[x_vals.at(i) - 48][y_vals.at(i) - 48] = 'A';
}

【问题讨论】:

  • 能否添加 x_vals、y_vals 和 player_board 的声明/赋值语句?
  • 您能否也显示一个输出示例以查看索引是否有问题?
  • '-48' 似乎有风险,因为您可能会按负数索引数组。
  • 为什么你在 x_vals 和 y_val 处是“-48”。什么类型的 x_vals 和 y_vals 向量(双精度或整数)?
  • 如果你的意思是'0',写'0'而不是48。根据您的代码,x_valsy_vals 不存储坐标,它们存储可能表示坐标的数字(字符)。存储实际坐标而不是数字(字符)将简化您的代码并且不易出错。 (我怀疑您在某处错过了数字->数字或数字->数字转换。)

标签: c++ arrays indexing


【解决方案1】:

我假设 x_vals 和 y_vals 被声明为 int 或 uint 的向量,因此当尝试获取二维矩阵中某个索引处的单元格时,您可能会为矩阵提供负值。 例如,假设您的 x_val.at(1) = 10 -> 那么您将尝试访问索引 -38 处的单元格。 如果我错了,请纠正我,并请提供有关 x_vals 和 y_vals 的类型以及 player_board 的矩阵分配的更多信息。

【讨论】:

    【解决方案2】:

    当您打印出 x_vals.at(i) - 48 和 y_vals.at(i) - 48 的值时,您没有得到一些负值吗?我认为您正在获取这些负值,然后尝试在负索引处访问数组中的值,例如player_board[-10]...

    也许您可以尝试使用 x_vals.at(i) - 48 和 y_vals.at(i) - 48 的绝对值作为索引值

    您还确定当您使用索引值时它们不会超出数组的声明范围。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 2017-10-27
      • 2021-06-27
      • 1970-01-01
      • 2023-03-30
      • 2014-06-01
      • 2016-02-20
      相关资源
      最近更新 更多