我創建了以下陣列:爲什麼sizeof(str)8當字符串有26個字符?
char* myarr= "data successfully inserted";
當我做
sizeof(myarr)
我得到8.爲什麼我得到的是?如果1個字符是1個字節,那麼myarr的大小應該是26,只需要對字符進行計數?
我創建了以下陣列:爲什麼sizeof(str)8當字符串有26個字符?
char* myarr= "data successfully inserted";
當我做
sizeof(myarr)
我得到8.爲什麼我得到的是?如果1個字符是1個字節,那麼myarr的大小應該是26,只需要對字符進行計數?
在您的平臺上,char
指針是8個字節。這是指針變量的大小,而不是它指向的大小。如果你想要一個字符串的長度,請致電strlen(myarr)
。
因爲這是系統上指針的大小。如果你想獲得一個字符串的長度,你應該使用strlen()
函數。
sizeof(myarr)
不是字符串的大小,但在您的平臺上的大小爲char * pointe
r,它給你8 bytes
。數組的大小可以通過以下方式計算:strlen(myarr)
因爲您正在獲取*指針的大小*您應該將其聲明爲'char [] myarray =「data successfully inserted」;',這將節省8個字節的空間。 – EJP
如果表達式'e'具有類型'T','sizeof(e)'等價於'sizeof(T)'。給定類型的所有對象都具有相同的大小。 – molbdnilo
因爲你濫用'sizeof',並且應該首先使用'std :: string',然後只在你確實需要時使用原始字符數組。 – StoryTeller