sizeof( ) 函数和 strlen( ) 函数区别
1、虽然两者都能得到“长度”,但本质完全不同:一个是运算符,一个是函数;一个看内存大小,一个看字符串内容。

2、sizeof()不将‘\0’加入长度计算。他计算的是内存长度,哪怕内存没填满。
strelen()计算的是字符串长度。包括'\0'。
例1:字符数组 vs 字符串
char str[] = "hello";printf("sizeof(str) = %zu\n", sizeof(str)); // 6:'h','e','l','l','o','\0'
printf("strlen(str) = %zu\n", strlen(str)); // 5:只数到 '\0' 前
例2:指针情况
char *p = "hello";printf("sizeof(p) = %zu\n", sizeof(p)); // 4 或 8:指针本身大小
printf("strlen(p) = %zu\n", strlen(p)); // 5:字符串内容长度
例3:定长数组
char buf[20] = "hi";printf("sizeof(buf) = %zu\n", sizeof(buf)); // 20:整个数组占 20 字节
printf("strlen(buf) = %zu\n", strlen(buf)); // 2:'h','i',遇 '\0' 结束
例4:非字符类型
int a[5];
printf("sizeof(a) = %zu\n", sizeof(a)); // 20:5 * 4 字节(假设 int 为 4 字节)
// strlen(a); // ❌ 错误:a 不是字符串,没有 '\0' 结尾
