用C生成和存储二维数组的问题

时间:2015-01-29 03:27:36

标签: c arrays

我正在编写一个程序,根据用户的要求翻转二维数组90,180或270度。我想出了旋转阵列的算法(我认为这将是困难的部分),但我遇到了一个我从未想过会遇到的问题。以下代码是根据用户指定的维度生成原始数组的代码段。它将随机生成,但为了进行故障排除,我只是使生成的数组不断从0上升到8,并且每次运行时都将尺寸设置为3x3。

1: int array_side_length = 3;
2: int x = 0;
3: int y = 0;
4: int original_array[array_side_length][array_side_length];
5: int z = 0;
6:
7: for(x = 0; x < array_side_length; x++){
8:    printf("\n");
9:    for(y = 0; y < array_side_length; y++){
10:        original_array[x][y] = z;
11:        z++;
12:        printf("%d ", original_array[0][0]);
13:    }
14: }

当我将第12行更改为

printf("%d ", original_array[x][y]);

代码块按预期生成以下数组:

0 1 2
3 4 5
6 7 8

但......当我将“original_array”的参数更改为“[0] [0]”时,我得到以下内容:

0 0 0
3 3 3
6 6 6

这让我感到困惑,因为我希望代码返回一个全零的数组。我没看到“original_array [0] [0]”的值正在改变。

1 个答案:

答案 0 :(得分:1)

我无法通过设置&#34; original_array&#34;来重新创建矩阵。到&#34; [0] [0]&#34;,

0 0 0
3 3 3
6 6 6

然而,我能够通过设置original_array [x] [0]来获得结果矩阵。我想你可能已经编译了以下而不是[0] [0]? (或者可能尝试编译original_array [0] [0],错过了一个错误并使用了旧的可执行文件?)