如何在C中访问全局2d数组的元素?

问题描述 投票:-1回答:1

我是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块。为什么?

c multidimensional-array global-variables
1个回答
1
投票

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

请注意,C中的数组始终为零索引,因此allhospitalsdata[0]引用first医院的数据。

我不知道您要实现什么,但是将2D数组想象成一个包含行和列的表。对于a[x][y]x用于访问行,而y用于访问列在该行中

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

© www.soinside.com 2019 - 2024. All rights reserved.