一道c语言题,#include<stdio.h>#include<string.h>#inclu

问题描述:

一道c语言题,
#include<stdio.h>
#include<string.h>
#include<ctype.h>

#define ARRAY_SIZE 10

void main()
{
\x05int i;
\x05int array[ARRAY_SIZE];
\x05
\x05i=1;
\x05while(i<=ARRAY_SIZE)
\x05{
\x05\x05array[i]=i-1;
\x05\x05printf("%d\n",array[i]);
\x05\x05i=i+1;
\x05}
}

它怎么无限循环下去了,这张是我调试的图,非常不能理解,为什么i到10的时候,又会变成9
1个回答 分类:综合 2014-09-29

问题解答:

我来补答
array[10]数组越界了
数组下标从0开始 (从0到ARRAY_SIZE-1)
再问: 它越界了,那为啥就是i一直是9啊,没有再递增上去嘞
再答: 局部变量存放在内存的栈区,它的内存分配是连续分配的,即,所是在一块连续的内存区域内.当我们声明变量时,那么编译器会自动接着当前栈区的结尾来分配内存.
可能是这个原因:
分配的内存:array[0]  array[1]  array[3]  array[4]  array[5]  array[6]  array[7]  array[8] array[9]   i由于数组越界了  访问array[10]时访问到 i 的地方了所以修改array[10]是修改了 i 。 

 
 
展开全文阅读
剩余:2000
上一页:牛刀小试4
下一页:第二问不会作