const关键字只适用于编译器吗?

时间:2017-01-26 14:18:43

标签: c arrays memory const

在尝试解决简单的2D阵列沙漏挑战时,我遇到了一个问题: 有人在此Hourglass sum in 2D array

详细介绍了此挑战

现在,来到我的代码,我只是尝试解决它如下(我知道我的方法非常低效:))

main()
{

    int i, j;
    int A[6][6] = { {1, 1, 1, 0, 0, 0 },
        { 0, 1, 0, 0, 0, 0 },
        { 1, 1, 1, 0, 0, 0 },
        { 0, 0, 2, 4, 4, 0 },
        { 0, 0, 0, 2, 0, 0 },
        { 0, 0, 1, 2, 4, 0 }
    };
    const int const index[] = { 0, 1, 2, 7, 12, 13, 14 };

    int res[7] = { 0 }, k = 0, l = 0;
    int * ptr = &(A[0][0]);

    for (i = 0; i < 21; i++)
    {
        //ptr = &(A[i][0]);
        for (j = 0; j < 7; j++)
        {
            res[k] += *((ptr + index[j]));
        }
        if (k >0 && res[k] > res[k - 1])
        {
            l = res[k];
        }
        k++;
        ptr++;
        printf("%X,", ptr);
    }

    printf("\n%d", l);

}

但是我遇到的奇怪问题是,虽然这段代码达到了(我认为它的A [1,4]),但我的index []数组本身的值正在被修改,以便索引值从0开始 - 6被分配了一些垃圾值!。,最终程序崩溃,因为这个垃圾值被添加到基指针,导致访问冲突。 虽然,我可以理解我的数组操作逻辑的任何可能的问题,我无法理解为什么常量索引数组被破坏。

0 个答案:

没有答案