Arrays 循环的数组输入重写值

Arrays 循环的数组输入重写值,arrays,c,Arrays,C,为了以防万一,我将包含整个代码,但未注释的部分是行为不端的部分。 出于某种原因,它接受元素5之前的输入,但在这之后,它将loop的值设置为用户输入的任何值。元素0-5工作得很好,我在前面设置了另一个循环,它工作得很好,假设一个循环从未到达元素5 编辑:我知道我现在做了什么。我再次使用了相同的数组,但没有调整它的大小 #include <stdio.h> #include <stdlib.h> #include <conio.h> #define ARRAY_S

为了以防万一,我将包含整个代码,但未注释的部分是行为不端的部分。 出于某种原因,它接受元素5之前的输入,但在这之后,它将loop的值设置为用户输入的任何值。元素0-5工作得很好,我在前面设置了另一个循环,它工作得很好,假设一个循环从未到达元素5

编辑:我知道我现在做了什么。我再次使用了相同的数组,但没有调整它的大小

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define ARRAY_SIZE 6
#define ARRAY_SIZE2 10

int main(void);
int main(void)
{
    int array [ARRAY_SIZE];
    int array2 [ARRAY_SIZE2];
    int loop;
    int loop2;


   /* for (loop = 0; loop < ARRAY_SIZE; loop++)   //prompt for ARRAY_SIZE number of integers and put them in the array
    {
        printf("\nEnter an integer:");
        scanf("%d", &array[loop]);
    }
    printf("\n\nThe original order:");
    for (loop = 0; loop < ARRAY_SIZE; loop++)   //prints the array out one line at a time
    {
        printf("\n%d", array[loop]);
    }
    printf("\n\nReverse order:");
    for (loop = ARRAY_SIZE - 1 ; loop > -1; loop--)  //prints the array in reverse order
    {
        printf("\n%d", array[loop]);
    }
    printf("\nMy name is Corbin King\n");*/

    for (loop = 0; loop < ARRAY_SIZE2; loop++)
    {
        printf("\nenter an integer:");
        scanf(" %d", &array[loop]);
        printf("%d", loop);
    }
     for (loop = 0; loop < ARRAY_SIZE2; loop++)
    {
        printf("%d\n", array[loop]);

    }
    /*for (loop = 0; loop < ARRAY_SIZE2; loop++)
    {
        for (loop2 = loop + 1; loop2 < ARRAY_SIZE2; loop2++)
        {
            if (array [loop] > array [loop2])
            {
            array2 [loop] = array [loop2];

            }


        }


    }
    for (loop = 0; loop < ARRAY_SIZE2; loop++)
    {
        printf("\n%d", array2 [loop]);
    }*/
    getch(); //The getch command waits until a user presses a key
    return 0;
}
#包括
#包括
#包括
#定义数组大小为6
#定义数组大小2 10
int main(无效);
内部主(空)
{
int数组[数组大小];
int array2[ARRAY_SIZE2];
内环;
int-loop2;
/*for(loop=0;loop-1;loop--)//按相反顺序打印数组
{
printf(“\n%d”,数组[loop]);
}
printf(“\n我的名字是科尔宾·金”)*/
for(loop=0;loop数组[loop2])
{
array2[loop]=数组[loop2];
}
}
}
for(loop=0;loop
变量
array
的大小为
array\u size
。仅允许从
0
开始循环,直到
ARRAY\u SIZE-1
,循环控制变量用于索引。通过在控制表达式中使用
ARRAY\u SIZE2
,您实际上使用了一个越界的索引,访问越界内存是非常困难的


for
循环的控制表达式更改为
循环

,这样我就不能有多个常量吗?@KingBlake您不能写入只有6个元素的数组的第7个元素(数字6)。是的,您可以,只要您尊重数组dizer。如果在整个代码中交换常量,您的程序将工作(您声明10,最多访问6个)。数组中有6个元素。当您输入第7个元素时,它位于数组之外并覆盖一些随机变量。这令人惊讶吗?当您写入一个包含6个元素的数组的第7个元素时,您希望发生什么?