我目前正在分析char和字符串數據類型。對於char
數據類型,剪斷下面的代碼保存好:將值賦給字符串指針
char value = 'a';
char value1[] = "Good";
char* value2 = "Good";
對於字符串,
string strValue = "Good";
string strVal[3] = {"Good","Better","Best"};
但下面的分配將引發編譯錯誤:
"error: scalar object strPtr requires one element in initializer"
string* strPtr = {"Good","Better","Best"}
所以,最初如何將值分配到string*
以上?
感謝, Udhai
'char * value2 =「不好」;' - 通過語言設計中的錯誤,它是允許的,但它不應該是,它已被棄用。字符串文字駐留在只讀存儲器中,並且在該語句中,您正在爲其中的第一個元素指定一個非const指針。所以如果你嘗試修改字符串,它會編譯,但它在運行時不起作用。那很糟。 – 2012-07-27 06:22:44
指針指向一個地址;對?因此,當你爲一個指針「賦值」的時候,你必須首先去引用它,然後你可以在指針所指向的地址處真正處理數據。試圖給一個未被引用的指針指定一個值就是說你試圖改變你指向的數據的地址。你給一個'string *'分配的是一個已經定義好的,或者至少是被聲明的'string'。 – ChiefTwoPencils 2012-07-27 06:29:50
在此期間沒有固定過嗎?我現在認爲(C++ 0x或者更高版本的標準)字符串文字總是有const char *類型(並且這會產生編譯錯誤)。 – Axel 2012-07-27 06:32:22