我正在使用 Code::Blocks 10.05 和 GNU GCC 编译器。
基本上,当尝试在声明的大小之外初始化数组时,我遇到了一个非常奇怪(对我来说,莫名其妙)的问题。简而言之,就是这样:
*有一个大小为 [x][y] 的声明数组。
*还有另一个大小为 [y-1] 的声明数组。
尝试将值放入第二个size [y-1]数组中时会出现问题,该数组超出了[y-1]大小。尝试此操作时,第一个数组[x][y]将不再保留其所有值。我根本不明白为什么破坏(或试图破坏)一个数组会影响另一个数组的内容。这是一些示例代码,可以查看它的发生情况(它的格式已损坏。要查看问题消失,只需更改array2[4]为array2[5](从而消除了我指出的问题)。
#include <stdio.h>
int main(void)
{
    //Declare the array/indices
    char array[10][5];
    int array2[4]; //to see it work (and verify the issue), change 4 to 5
    int i, j;
    //Set up use of an input text file to fill the array
    FILE *ifp;
        ifp = fopen("input.txt", "r");
    //Fill the array
    for (i = 0; i <= 9; i++)
    {
        for (j = 0; j <= 5; j++)
        {
            fscanf(ifp, "%c", &array[i][j]);
            //printf("[%d][%d] = %c\n", i, j, array[i][j]);
        }
    }
    for (j = 4; j >= 0; j--)
    {
        for (i = 0; i <= 9; i++)
        {
            printf("[%d][%d] = %c\n", i, j, array[i][j]);
        }
        //PROBLEM LINE*************
        array2[j] = 5;
    }
    fclose(ifp);
    return 0;
}
那么有谁知道这是如何发生或为什么发生的?