数组:Out of Bounds Computation

时间:2015-01-08 10:12:21

标签: c arrays

当使用GCC v4.8.1在CodeBlocks v13.12上运行时,该程序给出输出:2, 0。有人可以解释为什么或如何?

#include <stdio.h>

int main ( )
{
    int function [ 2 ] [ 3 ] = { { 1, 2, 3 }, { 4 } }, i = 1, j = 1;
    function [ i + 1 ] [ j ] = function [ j ] [ i + 1 ];    // Assignment Statement
    printf ( "%d, %d", function [ i ] [ j ], function [ j ] [ i + 1 ] );

    return 0;
}

我还注意到,在Assignment Statement中,表达式的LHS始终分配给变量i。因此,例如,如果声明更改为:

function [ i + 1 ] [ j ] = 100;    // Assignment Statement

i的值为100

1 个答案:

答案 0 :(得分:2)

function [ i + 1 ] [ j ]

访问数组越界将导致未定义的行为。

function [ 2 ]是数组越界访问。