大神求救c语言,为何结构体的数组没有报越界错误?

请大神听我道来,
劳请看一下下面的代码
#include
#include
typedef struct list{
int *next;
int elem[2];//此处定义大小为2的一维数组
}*list;
list head,p,q;
void main(){

int i, j=5;
head = (list *)malloc(sizeof(list));
p=head;
while(j--){
    q=(list *)malloc(sizeof(list));
    p->next=q;
    p=p->next;
    for(i=0;i<11;i++)//此处超出了上面定义的数组界限却没有报错
        p->elem[i]=i;
}
j=5;
p=head;
while(j--){ 
    p=p->next;
    for(i=0;i<11;i++)//此处超出了上面定义的数组界限却没有报错
        printf("%d\t",p->elem[i]);
    printf("\n");
}

}

为何结构体的数组没有报越界错误?
是什么原因的?

1个回答

c语言在任何情况下,甚至编译出让你计算机崩溃死机的程序都不会报越界错误。

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复w_wei_w: 我说的是“甚至”。好比你开车,开出道路边线,你的车不会阻止你,但是造成什么后果不一定,可能没事,可能撞墙,可能掉到河里
3 年多之前 回复
w_wei_w
w_wei_w 但程序也没有崩溃,正常运行着
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐