Pit*_*kos -2 c memory-management initialization
假设我像这样初始化一个数组:
char a[]="test";
Run Code Online (Sandbox Code Playgroud)
这是为了什么目的?我们知道内容可能会立即更改,因为它没有分配,因此有人会为此初始化数组?
澄清一下,由于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)
第一个语句在本地堆栈上分配固定大小的静态字符数组,第二个语句初始化其中的数据.大小由字符串文字的长度确定.与所有堆栈变量一样,该数组在退出函数范围时自动释放.
| 归档时间: |
|
| 查看次数: |
414 次 |
| 最近记录: |