这是代码。
int main(int argc, char *argv[])
{
char name[5];
printf("%s\n",name);
system("PAUSE");
return 1;
}
printf函数输出©。它为什么使用那个角色?在不同的实例中,使用其他字符。我试图更多地了解内存在C中是如何工作的。
干杯:)
编辑 - 谢谢大家。你的所有答案对我都非常有用。
答案 0 :(得分:2)
tl; dr:值未确定。
取决于编译器,数组的值是未确定的(大多数情况下)或零(某些特定的编译器清理堆栈)。
大多数情况下,数组只是从堆栈中取出的一些内存空间,因此在使用它之前,根据内存的这个区域,你可以在那里有许多不同的值。
答案 1 :(得分:1)
由于在函数中声明array
,因此初始值未定义。如果array
被声明为全局,那么它将被初始化为所有zero
。来自draft standard,6.7.9.10
如果未明确初始化具有自动存储持续时间的对象, 它的价值是不确定的。
答案 2 :(得分:0)
根据标准,它是undefined,这意味着它可以是任何东西。如果您想确保它是一个特定值,则必须自行设置(例如,使用memset()
)。
这并不意味着某些编译器可能会将其设置为特定值。
答案 3 :(得分:0)
未初始化数组的使用是未定义的行为,因此printf调用可能导致任何结果,包括应用程序崩溃。在现实生活中,它将从堆栈中打印出一些垃圾。