sizeof和strlen

一、sizeof和strlen的相同點:二者都是用來統計字符串所佔用的大小的。
二、區別:
1、strlen是函數,而sizeof是運算符;
2、strlen必須以char *作爲參數,且必須以’\0’結尾;而sizeof()可以用於其他類型;
3、strlen統計字符串中字符的長度,不包括結尾的’\0’;
4、數組做sizeof的參數不退化,而傳遞給strlen就變爲指針
舉個栗子:
void Func(char str_arg[100])
{
printf(“%d\n”, sizeof(str_arg));
}
int main(void)
{
char str[] = “Hello”;
printf(“%d\n”, sizeof(str));
printf(“%d\n”, strlen(str));
char *p = str;
printf(“%d\n”, sizeof(p));
Func(str);
}
答案解析:
sizeof(str):佔用的字節爲5 + 1 = 6,其中1爲末尾的’\0’;
strlen(str):5
sizeof(p):計算的是指針的長度,32位機器上爲4B
Func(str):傳遞的是指針,大小爲4,數組作爲函數參數傳遞的時候,已經退化爲指針了,Func 函數的參數str_arg只是表示一個指 針,那個100不起任何作用的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章