天天看點

C語言sizeof() 和 strlen() 差別

​​​​

1、編譯時計算運算符sizeof,可用類型或變量做參數,計算占用記憶體的大小。sizeof後若是類型必須加括弧,若是變量名可不加括弧。sizeof(x)可用來定義數組維數如:

    輸出的結果為短整型的長度2。用結構類型或變量做參數時,sizeof 傳回實際的大小,當用于靜态數組時,sizeof 傳回全部數組的尺寸。sizeof 操作符不能傳回動态地被分派了的數組或外部的數組的尺寸

2、運作時計算strlen,隻能用char*做參數,且必須是以''\0''結尾的。計算的是字元串的長度。如:

3、處理靜态數組:

4、處理指針:

ss是指向字元串常量的字元指針,sizeof 獲得的是一個指針所占的空間。sizeof(*ss) 結果1,*ss是第一個字元 其實就是獲得了字元串的第一位'0' 所占的記憶體空間,是char類型的,占用1位元組。strlen(ss)= 10,若要獲得這個字元串的長度,則一定要使用 strlen