#include<stdio.h>
struct student{
int ID;
char name;
}stu[10]; //表示stu数组里有10个结构体类型的元素(stu[0] ~ stu[9]),每个元素都有两个成员(ID、name)
int main()
{
stu[0].ID = 666;
stu[0].name = 'd';
stu[1].ID = 777;
stu[1].name = 'e';
stu[10].ID = 777;
stu[10].name = 'e';
stu[110].ID = 777; //为什么越界了还可正常输出?
stu[110].name = 'e';
printf("stu[0]的ID是:%d,name是:%c\n",stu[0].ID,stu[0].name);
printf("stu[1]的ID是:%d,name是:%c\n",stu[1].ID,stu[1].name);
printf("stu[10]的ID是:%d,name是:%c\n",stu[10].ID,stu[10].name);
printf("stu[110]的ID是:%d,name是:%c\n",stu[110].ID,stu[110].name);
}
【运行结果】
stu[0]的ID是:666,name是:d
stu[1]的ID是:777,name是:e
stu[10]的ID是:777,name是:e
stu[110]的ID是:777,name是:e
这段代码中,我在结构体数组定义语句中只定义了10个长度,按理来说最大只能使用到stu[9],为什么stu[10]甚至stu[110]还可以正常被赋值、输出?