gpt4 book ai didi

填充数组的代码突然改变变量(C)

转载 作者:行者123 更新时间:2023-11-30 21:16:14 27 4
gpt4 key购买 nike

我刚刚开始学习编码,并提出了以下让我摸不着头脑的问题。在“for”循环的倒数第二个输入处,“control”突然变成该输入(通过插入 printf 进行测试)知道为什么,以及如何避免它(除了放弃 scanf)

#include <stdio.h>
int sorting[], control,place, a,b,print;
int main()
{
printf("Please enter how many numbers there are in total.\n");
scanf("%d",&a);
sorting[a];
control=a-1;
print=a;
printf("Please start entering your numbers.\n");
for(;print>0;print--)
{
scanf("%d",&sorting[print-1]);
}

P.s.我知道当“a”可以正常工作时我有一个额外的变量(打印) - 我重写了它以查看“control=a”是否以某种方式导致了问题。

最佳答案

当您声明排序时,您将其声明为一个未知大小的数组。如果您没有在任何地方定义数组,则大小将为 1,并且上面的任何索引都将超出范围并导致未定义的行为(很可能覆盖其他数据,例如变量)。

对此有两种解决方案,但我只会告诉您一种:不要使用全局变量,并在获得用户输入的大小后定义数组。即

scanf("%d",&a);
int sorting[a];

关于填充数组的代码突然改变变量(C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35456032/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com