2009-06-25 99 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」的向量。