char* str = "abcd";
char str[5] = "abcd";
比如在分配内存的时候, 还有在其他方面有什么区别
PHP中文网2017-04-17 11:26:54
const char *str1 = "abcd";
這個語句在記憶體中分配了一塊靜態記憶體儲存字元數組,然後把該字元數組的首位址賦予指針str1
,這裡的str1
是一個指針,用sizeof
操作符對其操作時,傳回的是該指標的大小。 char str2[5] = "abcd";
這個語句在棧內存中分配了一塊內存存儲字符數組,然後把該字符數組的首地址賦予str2
,標識該數組,用sizeof
操作符對其操作時,傳回的則是數組名str2
所標識數組的元素個數。
sizeof(type)
sizeof expression
兩個版本都回傳一個size_t
類型的常數。
1) 傳回 type 類型對應物件的大小(以位元組為單位)。
2) 傳回 expression 的回傳類型對應物件的大小(以位元組為單位)。
所以原來的回答有錯誤,現在更正為: sizeof str1
回傳的是指標str1
的位元組大小,sizeof str2
傳回的是str2
所標識數組的所有元素的位元組大小。