sizeof 是一個物理層面的操作符,通常在編譯期間確定,得到的是一個對象/類型在棧上的投影大小。
strlen 是一個邏輯層面的函數,運行時求值,得到的是一個 char[] 中第一個 '\0 ' 之前所有字符的數量。
(1)sizeof操作符的結果類型是size_t,它在頭文件中的typedef是unsigned int類型,該類型保證能容納實現所建立的最大對象的字節大小。
(2)sizeof是運算符,strlen是函數。
(3)sizeof可以用類型作參數,strlen只能用char*作參數,且必須是以“\0”結尾的。sizeof還可以用函數作參數。比如:
short f();
printf("%d\n",sizeof(f());
(4)strlen的結果要在運行的時候才能計算出來,計算字符串的長度,不是類型佔內存的大小。
(5)數組作爲參數傳遞給函數時,傳遞的是指針不是數組,傳的是數組的首地址。