sizeof是运算符,计算的是内存分配的多少
strlen是函数,所在的头文件为<string.h>,计算的是字符串的长度,即从开始到第一个'\0'的长度(不包括'\0')
char str[5] = "123";
int a = strlen(str); //3
int b = sizeof(str); //5
char *str = "123";
int a = strlen(str); //3
int b = sizeof(str); //4
此外,sizeof在编译时计算大小,所以不能计算动态分配的内存大小,而strlen计算的是实时大小
比如
int *a;
a = new int[10];
int b = sizeof(a); //此时计算的是指针的大小,所以b=4,而不是数组的大小