sizeof和strlen的区别是什么?举出例子说明

sizeofstrlen 都用于获取数据的大小,但它们的作用和计算方式不同。

区别: 

1、sizeof(计算数据类型或变量的大小)

  • 计算的是变量或类型所占的总字节数,包括 char 数组的 \0 终止符。
  • 编译时确定,与内容无关。
  • 适用于任何数据类型(基本类型、数组、结构体等)。

2、strlen(计算字符串的长度)

  • 计算的是字符串的实际长度(不包括 \0)。
  • 运行时确定,仅适用于 char 类型的字符串。
  • 需要遍历字符串直到 \0 终止符。

示例:

#include <stdio.h>
#include <string.h>

int main() {
    char str1[] = "Hello";  // 包含 'H' 'e' 'l' 'l' 'o' '\0'
    char *str2 = "Hello";   // 指针指向常量字符串

    printf("sizeof(str1) = %zu\n", sizeof(str1));  // 6 (包含 '\0')
    printf("strlen(str1) = %zu\n", strlen(str1));  // 5 (不包含 '\0')

    printf("sizeof(str2) = %zu\n", sizeof(str2));  // 8 (指针大小, 64位系统)
    printf("strlen(str2) = %zu\n", strlen(str2));  // 5 (字符串内容长度)

    return 0;
}
posted @ 2025-03-08 14:27  freshman_xy  阅读(95)  评论(0)    收藏  举报  来源