说我确实像这样初始化数组:

char a[]="test";


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

最佳答案

需要说明的是,由于OP所述原因,此代码是错误的:

char* a;
strcpy(a, "test");


正如其他响应所指出的那样,语法“ char a [] =“ test””实际上并未这样做。实际效果更像这样:

char a[5];
strcpy(a, "test");


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

关于c - 为什么有人会在C中初始化未分配的内存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8726367/

10-11 19:15
查看更多