首先要知道结构体各个成员之间的地址是靠在一起的
typedef struct STUDENT
{
char id[15];
char name[20];
float score[5];
float total;
}STU;
如该结构体,当id访问越界的话,那么得到的就是name里面的
比如name=“Mikal Bridges"
那么id[15] = M, id[16] = i,若使id[15] = '\0', 那么name就是空的
而如果你id刚好有15位的话,就有可能出问题
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
typedef struct STUDENT
{
char id[10];
char name[20];
float score[5];
float total;
}STU;
int main()
{
STU a = {"2022112657", "Bridges"};
printf("%s\n%s",a.id,a.name);
return 0;
}
如该代码 运行结果如下

所以有时要注意数组边界
文章讲述了在C语言中,如何理解结构体成员变量地址的连续性,以及在访问结构体数组时需要注意数组边界以防止越界错误,以STUDENT结构体为例进行说明。

被折叠的 条评论
为什么被折叠?



