sizeof 和strlen的區別

1. 編譯時計算運算符sizeof,可用類型或變量作參數,計算佔用內存的大小。sizeof後如果類型必須加括弧,如果變量名可不加括弧。sizeof(x)可用來定義數組維數。如:printf("%d\n",
sizeof(short));輸出的結果爲短整型的長度2。用結構類型或變量作參數時,sizeof 返回實際的大小,當用於靜態數組時,sizeof 返回所有數組的尺寸。sizeof 操做符不能返回動態地被分派了的數組或外部的數組的尺寸
2. 運行時計算strlen,只能用char*作參數,且必須是以''\0''結尾的。計算的是字符串的長度。如:char str[20]="0123456789"; int a=strlen(str); 結果爲a=10; 而int b=sizeof(str); 結果b=20;

3. 處理靜態數組:
char str[20]="0123456789";
int a=strlen(str); /*a=10; strlen 計算字符串的長度,以\0'爲字符串結束標記。
int b=sizeof(str); /*b=20;sizeof 計算的則是分配的數組str[20] 所佔的內存空間的大小,不受裏面存儲的內容影響。

4. 處理指針: char* ss = "0123456789"; sizeof(ss) 結果4,ss是指向字符串常量的字符指針,sizeof 得到的是一個指針所佔的空間。sizeof(*ss) 結果1,*ss是第一個字符 其實就是得到了字符串的第一位'0' 所佔的內存空間,是char類型的,佔用1字節。strlen(ss)= 10,若要得到這個字符串的長度,則必定要使用 strlen
相關文章
相關標籤/搜索