冷回清风暖 发表于 2020-11-10 15:31:58

二维数组定义问题

数组g中莫名其妙多了g = 1的元素。为什么呢{:5_104:}
int main(void) {
        int g[] = {
                {6,7,4,8,1,2,5},
                {2,2,1,1,1,1,4},
                {2,1,1,1,1,6,9},
                {2,1,1,1,1,1,3},
                {5,6,7,1,1,2,3},
        };
        Point start;
        start.x = 2;
        start.y = 2;
        int area = fun(g, start,g,5,7);
        for (int i = 0; i < 5; ++i) {
                for (int j = 0; j < 7; ++j)
                        printf("%2d", g);
                putchar('\n');
        }
        printf("%d\n", area);
}

小甲鱼的铁粉 发表于 2020-11-10 16:25:21

这样试试?
int main(void) {
      int g[] = {
                {6,7,4,8,1,2,5},
                {2,2,1,1,1,1,4},
                {2,1,1,1,1,6,9},
                {2,1,1,1,1,1,3},
                {5,6,7,1,1,2,3},
      };
      Point start;
      start.x = 2;
      start.y = 2;
      int area = fun(g, start,g,4,6);
      for (int i = 0; i < 5; ++i) {
                for (int j = 0; j < 7; ++j)
                        printf("%2d", g);
                putchar('\n');
      }
      printf("%d\n", area);
}

jackz007 发表于 2020-11-10 16:26:53

      对于
      int g[] = {
                {6,7,4,8,1,2,5},
                {2,2,1,1,1,1,4},
                {2,1,1,1,1,6,9},
                {2,1,1,1,1,1,3},
                {5,6,7,1,1,2,3},
      };
    的定义而言,g 已经显然是下标越界了,也就是说,根本无法访问这个元素,楼主是如何发现这个问题的?

冷回清风暖 发表于 2020-11-15 21:32:04

jackz007 发表于 2020-11-10 16:26
对于

    的定义而言,g 已经显然是下标越界了,也就是说,根本无法访问这个元素,楼主是 ...

用VS2017调试的时候发现的 而且代码运行过程中确实有这个元素

jackz007 发表于 2020-11-15 21:44:56

冷回清风暖 发表于 2020-11-15 21:32
用VS2017调试的时候发现的 而且代码运行过程中确实有这个元素

       数组越界,被访问到的就已经不是本数组的元素了,而是属于其他变量内存中的内容。是什么线索引导你去越界访问这个数组元素,有什么特殊的理由?
页: [1]
查看完整版本: 二维数组定义问题