这提出了另一个问题评论
字符串文字具有静态存储持续时间(参见标准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'}