为什么有人会在C中初始化未分配的内存?

Pit*_*kos -2 c memory-management initialization

假设我像这样初始化一个数组:

char a[]="test";
Run Code Online (Sandbox Code Playgroud)

这是为了什么目的?我们知道内容可能会立即更改,因为它没有分配,因此有人会为此初始化数组?

D C*_*zee 5

澄清一下,由于OP所说明的原因,这段代码是错误的:

char* a;
strcpy(a, "test");
Run Code Online (Sandbox Code Playgroud)

如其他响应所述,语法"char a [] ="test""实际上并不这样做.实际效果更像这样:

char a[5];
strcpy(a, "test");
Run Code Online (Sandbox Code Playgroud)

第一个语句在本地堆栈上分配固定大小的静态字符数组,第二个语句初始化其中的数据.大小由字符串文字的长度确定.与所有堆栈变量一样,该数组在退出函数范围时自动释放.