为什么打印10而不是3?在C Lang

时间:2019-01-09 05:28:49

标签: c arrays

#include <stdio.h>

int main(){
    int a = 3;
    int b[] = {1,2};
    int c = 4;
    b[3] = 10;

    printf("a = %d\n",a);

    return 0;
}
  

输出: 10

也许是整数输出,它也没有携带任何垃圾值,但是当我将值分配给变量 a a = 5并高于值{{1}之后},它只会按原样打印输出,告诉我这是怎么回事!

1 个答案:

答案 0 :(得分:6)

您的代码中存在未定义的行为

b[3] = 10;

初始化数组时,您仅分配了2个项目的空间。您尝试访问第4个元素,并且该内存不属于数组,因此您得到的结果很奇怪。曾经发生过变量ab[3]存储在同一位置,因此被覆盖

尝试打印sizeof您的阵列,并检查为该阵列分配了多少内存