You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中未初始化的整型数组为何会填充看似垃圾的数据?

数组里的随机数据是正常现象,原因如下:
  • C语言里的局部数组(比如你定义的numbers)在声明时不会自动初始化。这类变量存在栈内存中,而栈空间可能残留着之前程序运行、函数调用留下的旧数据,这些数据对你来说就像是“随机值”。
  • 你的代码只给数组的前index个元素赋了值(对应用户输入的每个数字),剩下的20 - index个元素完全没被修改过,所以它们保留着栈里的原始残留数据。
  • 不过放心,你的代码逻辑并没有访问这些未初始化的元素——输出循环是for (int i = 0; i < index; i++),只遍历了已经赋值的部分,所以这些随机数据不会影响程序的最终输出。

如果不想看到这些随机数据,可以在声明数组时手动初始化,比如改成:

int numbers[20] = {0};

这样数组里所有元素都会被初始化为0。

你的代码:

int main() {
    int numbers[20], index;

    index = 0;
    int num = getchar();
    while (num != '\n') {
        numbers[index] = num - 48; // ASCII "0" starts at 48
        index++;
        num = getchar();
    }

    for (int i = 0; i < index; i++) {
        printf("%d", numbers[i]);
    }
    printf("\n");

    return 0;   
}

内容的提问来源于stack exchange,提问作者Markix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 08:13:15