如何知道某个位置是否超出了我的2D阵列?

时间:2014-11-29 05:27:11

标签: c arrays matrix null multidimensional-array

我需要知道2D阵列的位置是否超出它。例如,我有一个8x8阵列,用户需要在一个位置添加一个数字,例如MyArray[3][7],但首先我需要验证该位置是否在我的数组中。所以...我可以这样问吗?

if (MyArray[x - 1][y - 1]==NULL){
  printf("Give me another location: \n");
  .
  .
  .
}

2 个答案:

答案 0 :(得分:2)

如果用户输入xy的值,那么您可以执行以下操作:

#include <stdio.h>

int main() {
    int MyArray[8][8];

    int x, y;

    printf("Give me a location: ");
    scanf("%d %d", &x, &y);

    while (x < 0 || x > 7 || y < 0 || y > 7) {
        printf("Give me another location: ");
        scanf("%d %d", &x, &y);
    }

    return 0;
}

否则程序可能会尝试访问程序不应该触摸的内存空间并尝试检查它是否为NULL。

答案 1 :(得分:1)

你需要传递数组的维度以及数组本身,然后检查愚蠢的方式:

if (x < 0 || x >= xlen || y < 0 || y >= ylen) {...