C 数组:越界计算
在GCC v4.8.1版本的代码块v13.12上运行此程序时,会给出以下输出:C 数组:越界计算,c,arrays,C,Arrays,在GCC v4.8.1版本的代码块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 Statem
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;
}
i
的值将是100
function [ i + 1 ] [ j ]
越界访问数组将导致未定义的行为
函数[2]
是数组越界访问。谢谢Gopi,你能帮我回答问题的第二部分吗?“i”的值为什么在变化?答案已经解决了。未定义的行为意味着任何事情都可能发生。为什么不停止注销数组的结尾?为什么你认为这样做是个好主意?@DMehta当我们说未定义的行为时。我们无法解释结果。我正在试验内存位置。@DMehta很好!!进行实验,但注意不要在实验中导致UB,并期望得到相同的解释
function [ i + 1 ] [ j ]