2009-06-25 92 views
-4

为什么我不能初始化本地阵列字符串C++数组初始化

+10

给我们的代码,它可能会使问题更清晰。 – mikek 2009-06-25 07:25:06

+0

您的意思是问:“为什么我不能从**字符串初始化本地数组**?” – 2011-11-05 19:30:59

回答

7

为什么我不能初始化本地阵列字符串

正确的答案是,你可以 - 给定数组和字符串的给定定义。你想要达到什么目的?

char str[] = "Hello world"; 
+0

这最好是“const char str []”。否则,您最终可能会写入可执行字节。 – xtofl 2009-06-25 08:11:37

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

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

将创建一个包含5个元素并初始化为“abc”的向量。