当我将字符串文字分配给char数组时,我的内存中是否有两个字符串

时间:2016-10-19 11:54:21

标签: c string

这提出了另一个问题评论

  

字符串文字具有静态存储持续时间(参见标准6.4.5 / 6)。 - Jean-BaptisteYuès

我不想劫持评论部分。 所以问题是当我这样做时:

char arr[10] = "Hello";

我的记忆中确实有两个字符串吗? 一个在arr,直到我的范围结束(自动持续时间) 并且在程序关闭之前创建文字的一个点(静态持续时间)

这是否等同于:

char* str = "Hello";
char arr[10];
memcpy(arr,str,6);

如果这是真的,那么我想确定会发生什么 char a = 'a';

这也有双重分配吗?我猜测'a'将被直接写入a

导致我的上一个问题,这会更有效吗?

char arr[10] = { 'H', 'e', 'l', 'l', 'o', '\0'}

0 个答案:

没有答案