C Gloabal变量似乎是重叠的
所以我使用了一个名为sample的gloabal变量和一个包含char的结构 因此,在接下来的程序中,当我指定一个值来采样时,它与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
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输出。