c - 如何在 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
块。为什么?
解决方案
因为您正在访问 的第 4 个元素allhospitalsdata[hospitalid]
,它只包含三个元素。事实上,C 不会阻止您访问位于无效索引处的数组。你必须自己处理。发生的情况是allhospitalsdata[hospitalid][3]
(它不是您的数组的一部分!)存储了一些未定义的东西,通过观察if
条件,它可能大于或等于零。这就是它进入else
区块的原因。
请注意,C 中的数组始终是零索引的,因此allhospitalsdata[0]
指的是第一家医院的数据。
我不知道您要实现什么,但将 2D 数组想象为具有行和列的表。For a[x][y]
,x
用于访问一行,而y
用于访问该行中的列。
如果您有其他问题,请澄清。
推荐阅读
- javascript - 如何处理 Sails JS 返回的验证消息?
- typescript - 创建引用自身的类型/接口
- reactjs - React-i18next 悬念
- php - Laravel 将 `id` 更改为 `AUTO_INCREMENT`
- laravel - Laravel 分页有问题
- python - conda install packages for all user error 通道不可访问或无效
- haskell - 压缩和计算
- c - C 从 CSV 文件读取每条记录后显示的零
- angular - ngOnChanges 只执行一次
- api - 只有当我的条件在空手道中得到满足时,我才能匹配响应