据我所知,C数组不能动态增长.但是为什么指数= 5和6在下面工作?
char carray[5];
carray[0] = 'a';
printf("carray[0]=%c\n", carray[0]);
carray[5] = 'b';
printf("carray[5]=%c\n", carray[5]);
carray[6] = 'c';
printf("carray[6]=%c\n", carray[6]);
Run Code Online (Sandbox Code Playgroud)
输出:
char_array [0] =
char_array [5] = b
char_array [6] = c
C中没有任何内容可以阻止您读取或写入超出数组范围的内容.元素5和6所在的数组之后的内存可能是另一个变量或函数或谁知道什么,并通过为该内存分配新值,可能导致程序崩溃.或者它可能只是工作.您无法知道结果是什么,因为您正在导致未定义的行为.
这是一个很好的做法,可以充分了解分配内存的大数组或大块,并且不会超越它们!