【发布时间】:2020-04-07 08:07:45
【问题描述】:
所以我是 c 的初学者,我正在做这个程序,用户在数组中输入值,如果值是 101,那么程序就完成了。问题是我不希望初始化数组的长度,而是当用户输入 101 时,会有最后一个值和数组中的最后一个位置。例如,他们在第三位输入了 101,那么数组的长度将为 4。我不知道这是否可能。
#include <stdio.h>
int main(void) {
int i,j;
int a[i];
for(i=0;i<10;i++)
{
printf("Enter Value Nummber %d:",i);
scanf("%d",&a[i]);
if
(a[i] == 101) break;
else continue;
}
在这里,我将最大长度设置为 10,但是,例如,如果用户只给出 4 个值,然后给出 101,那么它会给出其余的点垃圾值。
【问题讨论】:
-
首先:
int a[i]是错误的,因为此时尚未设置i,因此包含随机垃圾。至于您的问题,您可以使用动态分配函数realloc将数组大小连续增加1。但这通常不是这样做的,因为连续重新调整数组大小效率低下。通常会设置一个最大大小,然后跟踪数组中已填充了多少条目。 -
关于“它是如何工作的”,答案是它不起作用。
i的值将是不确定的,它可以是任何看似随机或垃圾的值,包括零或一百万或负一万或完全不同的值。
标签: c arrays memory initialization