我想將字串“Best School”復制到記憶體中的一個新空間中,我可以使用這些陳述句中的哪一個來為其保留足夠的空間
一個。malloc(sizeof(“Best School”))
B.malloc(strlen(“Best School”))
C。malloc(11)
D.malloc(12)
E.malloc(sizeof(“Best School”) 1)
F。malloc(strlen(“Best School”) 1)
我對 C 編程語言還是很陌生,所以我真的不太確定哪個效果好。但我會喜歡有人向我展示哪些可以使用以及為什么應該使用它們。
謝謝你。
uj5u.com熱心網友回復:
C 中的文字字串實際上是陣列,包括空終止符。
當您sizeof在文字字串上使用時,您將獲得陣列的大小,其中當然包括陣列內的空終止符。
因此,文字字串的一種正確方法是sizeof("Best School")(或sizeof "Best School")。
您也可以使用strlen. 如果您沒有字串文字而是另一個陣列或指向字串第一個字符的指標,那么您必須使用strlen. 但是現在您必須記住,它回傳不帶空終止符strlen的字串的長度。因此,您需要為此添加一個。
所以另一種正確的方法是strlen("Best School") 1。
使用幻數幾乎是不正確的。
uj5u.com熱心網友回復:
id的使用sizeof僅限于這種情況(字串文字)。如果您將有一個指標參考該字串,Ti 將不起作用。在開始更精通 C 語言并“感受”IMO 陣列和指標之間的區別之前,您應該始終使用strlen
例子:
char *duplicateString(const char *str)
{
char *newstring = malloc(strlen(str) 1);
if(newstring) strcpy(newstring, str);
return newstring;
}
在這種情況下, sizeof(str) 將給出指標的大小char(通常為 2、4 或 8),而不是由str
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/531129.html
標籤:C细绳malloc
下一篇:對熊貓中的列進行子串化
