首页 > 解决方案 > 如何在 C 中访问全局二维数组的元素?

问题描述

我是 C 新手。我声明了一个 2D 全局数组:

int allhospitalsdata[4][3] = {{1,100,0},{2,200,0},{3,300,0},{4,400,0}};

然后我尝试访问某个索引处的值,如下所示:

if (allhospitalsdata[hospitalid][3]<allhospitalsdata[hospitalid][2])
  {
      //do something
  }
  else
  {
      //do another thing
  }

在测试条件时,它总是进入else块。为什么?

标签: cmultidimensional-arrayglobal-variables

解决方案


因为您正在访问 的第 4 个元素allhospitalsdata[hospitalid],它只包含三个元素。事实上,C 不会阻止您访问位于无效索引处的数组。你必须自己处理。发生的情况是allhospitalsdata[hospitalid][3](它不是您的数组的一部分!)存储了一些未定义的东西,通过观察if条件,它可能大于或等于零。这就是它进入else区块的原因。

请注意,C 中的数组始终是零索引的,因此allhospitalsdata[0]指的是第一家医院的数据。

我不知道您要实现什么,但将 2D 数组想象为具有行和列的表。For a[x][y],x用于访问一行,而y用于访问该行中的列

如果您有其他问题,请澄清。


推荐阅读