從Strings in Depth,我瞭解到,字符串類的內存佈局的確切實現不是由C++標準定義的。但是&string
和&string[0]
怎麼會有不同的內存地址?&string&string [0]的不同內存地址?
string variable("String Test");
cout << (void *) &variable << endl; // 003EFE58
cout << (void *) &variable[0] << endl; // 003EFE5C
cout << (void *) &variable[1] << endl; // 003EFE5D
... ...
但他們共享相同的內容,請參閱:
cout << ((string)*(&variable))[0] << endl; // 'S'
cout << *(&variable[0]) << endl; // 'S'
誰能解釋這是怎麼回事呢?
'string'不是數組類型,它是一個類類型。如果你聲明瞭一個'char'數組,這將會像預期的那樣工作。 – 2014-01-25 20:20:29
@ H2CO3正確,同意,因爲printf –
@GrijeshChauhan正確,同意,刪除** No!** op請求'std :: string' ... –