sizeof( ) 函数和 strlen( ) 函数区别。

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

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' 结尾
posted @ 2026-04-28 21:13  alanala  阅读(4)  评论(0)    收藏  举报