为什么int int arr [5] = {1,2,3};在c?

问题描述 投票:0回答:1

我在C中宣布一个数组:

#include <stdio.h>

int main() {
    int arr[5] = {1, 2, 3};  
    for (int i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}

i期望该数组在非初始化的位置完全初始化垃圾值或可能的一些随机数。但是,输出是:

1 2 3 0 0
chy为什么C自动用0填充其余元素,而不是使它们不可分化?

arrays c loops memory initialization
1个回答
0
投票
中的

当局初始化规则

部分初始化有效?

    阵列被部分初始化时,其余元素将自动设置为
  • 0

    
    

  • 这遵循
  • C标准(C99及更高版本)

    ,该标准可确保将初始化器列表中的任何丢失元素设置为零

    等效的显式初始化将是:
  • int arr[5] = {1, 2, 3, 0, 0};
如果您根本不初始化怎么办?

如果您声明一个数组没有初始化,则是这样:

    int arr[5]; // Uninitialized array
  • IT包含
  • garbagevalue
(来自内存的随机数据)

  • Key要收获:

当局初始化填充了剩余的元素0

  • 非字母化阵列包含

    齿轮值

  • 要明确零一个数组,请使用{0}

  • int arr[5] = {0}; // All elements set to 0

        

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.