示例:
char *ptr = "hello world";
char str[100] = "hello world";
sizeof(ptr) = 4B
sizeof(str) = 100B
strlen(ptr) = 11B
strlen(ptr) = 11B
面试回答总结:
我认为sizeof()与strlen()有以下几个区别。strlen是一个函数,它测量的是字符串中除去’\0’以外的字符数;而sizeof是一个关键字,含义可用作运算符。它测量的是对象或者类型所占的内存的字节数,包括’\0’在内;对于strlen的使用没有什么限制。而当sizeof测量指针的长度,得到的是地址的长度;当sizeof测量数组的时候,得到的是整个数组的长度;当函数调用数组做为参数的时候,用sizeof测量得到的仍然是一个指针的长度。