C Gloabal变量似乎是重叠的

C Gloabal变量似乎是重叠的,c,C,所以我使用了一个名为sample的gloabal变量和一个包含char的结构 因此,在接下来的程序中,当我指定一个值来采样时,它与d[2]重叠 我该怎么做才能解决这个问题?我做错什么了吗 最小代表: #include<stdio.h> #include<stdlib.h> char sample; int j=0,level=0,c=0; struct grid { char a[11]; }d[2]; void set(int level) //used

所以我使用了一个名为sample的gloabal变量和一个包含char的结构

因此,在接下来的程序中,当我指定一个值来采样时,它与
d[2]重叠

我该怎么做才能解决这个问题?我做错什么了吗

最小代表:

#include<stdio.h>
#include<stdlib.h>

char sample;
int j=0,level=0,c=0;
struct grid
{
    char a[11];
}d[2];

void set(int level)  //used to initialize the array
{
    j=0;
        for(j=0;j<11;j++)
            if(j!=3&&j!=7)
                d[level].a[j]=' ';

    d[level].a[3]='|';
    d[level].a[7]='|';
    d[level].a[11]=NULL;

}
int main()
{
    set(level++);
    set(level++);
    set(level);
    sample='x';
    printf("%c",d[2].a[0]);
}
#包括
#包括
煤焦样品;
int j=0,level=0,c=0;
结构网格
{
chara[11];
}d[2];
void set(int-level)//用于初始化数组
{
j=0;

对于(j=0;j数组
d
是用大小2定义的,这些元素具有索引0和1。对
set
的第三次调用将值2传递给函数。这意味着函数尝试写入数组的索引2,该索引超过数组的边界。您还尝试读取
d[2]
main
中的
。读取/写入数组末尾后调用

如果希望数组包含3个元素,请将其声明为3个元素

struct grid
{
    char a[11];
} d[3];

请阅读以下内容:。然后回答您的问题,并将代码添加为文本和文本。非常疯狂的猜测:检查您的数组索引是否没有越界。@jabberwocky好的,数组分配工作正常实际上,只有在我为Samples分配了值之后,当您访问一个带有越界索引的数组时,问题才会发生未定义的行为。如果使用越界索引写入数组,通常会覆盖另一个不相关的变量。可能,但代码图片基本上是无用的。您需要回答问题,并提供产生问题的简单输入示例。同时提供实际和预期的o输出。