C ++数组初始化

时间:2009-06-25 07:21:57

标签: c++ arrays initialization

为什么我不能用字符串

初始化本地数组

3 个答案:

答案 0 :(得分:7)

  

为什么我不能用字符串

初始化本地数组

正确答案是,您可以 - 对于给定的数组定义和字符串。你究竟想要实现什么目标?

char str[] = "Hello world";

答案 1 :(得分:4)

这个问题在细节上非常紧张,但是:

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定义为空终止的char数组 - 我相信这在C ++中是相同的,不要与std::string混淆。

答案 2 :(得分:1)

std::vector<std::string> abc(5,"abc");

将创建一个向量,其中5个元素初始化为“abc”。