我想知道什麼區別如下定義之間:String作爲指針VS陣列
// file.cpp:
namespace n
{
static char const * const str1 = "hello";
static char const str2[] = "hello";
}
行爲我想要的,我想他們都提供:
- 他們均指不可變的數據(因爲數據是char常量)
- 這兩個變量都不能修改(因爲str1被定義爲* const並且因爲str2是一個不能用作l值的數組?)
- 它們都具有內部鏈接(通過靜態)
- 他們都有命名空間範圍
- 如果一個指針或者字符串數據提供給不同的模塊(通過這裏沒有指定某些功能),對於那些字符串存儲會是有效的(str1,因爲它指向字符串文字,而str2是因爲該數組是在名稱空間範圍聲明的)
是否有語言保證有任何差異? 如果存在與實施相關的行爲,我該如何調查我在不同平臺上的差異?
(在這個例子中,我不感興趣,對比這些行爲具有的std :: string選項,雖然隨意談論太多,如果你認爲其他讀者會感興趣。)
沒有區別。 – tay10r
@TaylorFlores沒有區別?真? – 2013-06-11 18:42:34
@TaylorFlores是的! – juanchopanza