#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{
char* szHello = "Hello";
printf("%ld\n", sizeof(szHello));
printf("%ld\n", sizeof("Hello"));
printf("%ld\n", strlen(szHello));
printf("%ld\n", strlen("Hello"));
return 0;
}
结果是:
8 //我们char *类型指针的大小,这里是64位操作系统,故8个字节
6 //我们指针char *所指字符串“Hello”的大小,包括后面的结束符'\0'
5 //char *指针所指向的字符串的大小,不包括后面的结束符‘\0’
5 //字符串“Hello的大小”,不包括结束符'\0'
关于sizeof与strlen的对比总结
- sizeof是运算符,也是一个关键字,编译时求各种变量、类型大小,对字符串会包括结尾的’\0’
- strlen是函数,求字符串的长度,不包括结尾的’\0’