具有“静态”生存期的未初始化变量(即,在函数外声明的变量和有静态存储类型的变量)可以确保初始值为零,就像程序员键入了“=0”一样。因此,这些变量如果是指针会被初始化为正确的空指针,如果是浮点数会被初始化为0.0(或正确的类型)。
具有“自动”生存期的变量(即,没有静态存储类型的局部变量)如果没有显示初始化,即包含的是垃圾内容。对垃圾内容不能作任何有用的假设。
这些规则也适用于数组和结构(称为“聚合体”);对于初始化来说,数组和结构都被用于是“变量”。
用malloc()和realloc()动态分配的内存也可能包含垃圾数据,因此必须由调用者正确地初始化。用calloc()获得的内存为全零,但这对指针和浮点值不一定有用。