一道c语言题,#include<stdio.h>#include<string.h>#inclu
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/11 04:12:44
一道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
#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
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 。
数组下标从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 。
一道c语言题,#include<stdio.h>#include<string.h>#inclu
#include <stdio.h>
c语言编程计算数列合#include <stdio.h> #include &
C语言高手帮我填空#include <stdio.h>#include
while语句!#include <stdio.h>#include <windows.h>in
运行后的图是:#include <stdio.h>#include <stdlib.h>void
转置矩阵#include <stdio.h> #include <stdlib.h>
#include <stdio.h> #include <iostream> int main(
#include<string.h>是什么意思
C语言求余数问题#include<stdio.h>main(){ int x,y,a,b,c;&n
C语言编程数位的调换#include<stdio.h>int main(void){\x05int n,m,
#include <stdio.h>/* userCode(<80字符):自定义函数之原型声明 */i