【发布时间】:2009-06-25 07:21:56
【问题描述】:
为什么我不能用字符串初始化本地数组
【问题讨论】:
-
给我们代码,它可能会使问题更清楚。
-
你的意思是问:“为什么我不能从一个字符串初始化一个本地数组?”
标签: c++ arrays initialization
为什么我不能用字符串初始化本地数组
【问题讨论】:
标签: c++ arrays initialization
为什么我不能用字符串初始化本地数组
正确的答案是你可以——对于给定的数组和字符串定义。你到底想达到什么目标?
char str[] = "Hello world";
【讨论】:
str 可以安全地被操纵。如果我使用指针而不是数组,你会是对的。
这个问题在细节上非常简单,但是:
char arr[] = {'a','b','c', 0};
或
char arr[] = "string";
编辑:
回答问题:
char s1[] = "hi";
char s2[] = {'h','i',0};
memcpy(s1, "by", sizeof(s1));
memcpy(s2, "by", sizeof(s2));
cout << ios::hex << &s1 << endl;
cout << ios::hex << &s2 << endl;
cout << s1 << endl;
cout << s2 << endl;
打印:
80xbfffed72
80xbfffed6f
by
by
至少在我的系统上看起来两者都分配在相同的内存空间中,我没有看到任何问题或差异。例如,C 将 string 定义为空终止字符数组 - 我相信这在 C++ 中是相同的,不要与 std::string 混淆。
【讨论】:
std::vector<std::string> abc(5,"abc");
将创建一个包含 5 个初始化为“abc”的元素的向量。
【讨论】: