1、用法不一樣
sizeof可以用型別做引數。
strlen只能用char*做引數,且必須是以""\0""結尾的。sizeof還可以用函式做引數,比如:
short f();
printf("%d\n", sizeof(f()));
輸出的結果是sizeof(short),即2。
2、功能不一樣
sizeof的功能能是,獲得保證,能容納實現所建立的最大物件的位元組大小。
strlen的功能是返回字串的長度,該字串可能是自己定義的,也可能是記憶體中隨機的,該函式實際完成的功能是從代表該字串的第一個地址開始遍歷,直到遇到結束符NULL。返回的長度大小不包括NULL。
3、意思不一樣
sizeof(...)是運算子,在標頭檔案中typedef為unsigned int,其值在編譯時即計算好了,引數可以是陣列、指標、型別、物件、函式等。
strlen(...)是函式,要在執行時才能計算。引數必須是字元型指標(char*)。當陣列名作為引數傳入時,實際上陣列就退化成指標了。
1、用法不一樣
sizeof可以用型別做引數。
strlen只能用char*做引數,且必須是以""\0""結尾的。sizeof還可以用函式做引數,比如:
short f();
printf("%d\n", sizeof(f()));
輸出的結果是sizeof(short),即2。
2、功能不一樣
sizeof的功能能是,獲得保證,能容納實現所建立的最大物件的位元組大小。
strlen的功能是返回字串的長度,該字串可能是自己定義的,也可能是記憶體中隨機的,該函式實際完成的功能是從代表該字串的第一個地址開始遍歷,直到遇到結束符NULL。返回的長度大小不包括NULL。
3、意思不一樣
sizeof(...)是運算子,在標頭檔案中typedef為unsigned int,其值在編譯時即計算好了,引數可以是陣列、指標、型別、物件、函式等。
strlen(...)是函式,要在執行時才能計算。引數必須是字元型指標(char*)。當陣列名作為引數傳入時,實際上陣列就退化成指標了。