为什么结构数组让我索引到边界数组之外

时间:2018-11-20 10:20:05

标签: c arrays

对不起,标题不好,我是C语言的新手,但这是我不了解的部分。

我有一个简单的结构;

struct st{

        int a;
        int b;
};

并且我正在为main中的变量'a'创建结构和索引值的数组;

int main(){
         struct st st_arr[2];
         st_arr[0].a = 5;
         st_arr[1].a = 10;
         st_arr[4].a = 20;

         printf("%d %d %d\n", st_arr[0].a, st_arr[1].a, st_arr[4].a);
}

我分配了2个结构数组,但它让我索引该结构的第4个为什么?是不是应该给我一个错误?

输出为:

5 10 20

1 个答案:

答案 0 :(得分:1)

C默认情况下不提供(ny)绑定检查。

访问权限(即无效内存)被定义为具有undefined behaviour