C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C语言 sizeof 和 strlen

C语言中sizeof 和 strlen的区别

作者:dingdongkk

sizeof 和 strlen 是两个常用于 C/C++ 语言中的函数或操作符,本文主要介绍了C语言中sizeof 和 strlen的区别,具有一定的参考价值,感兴趣的可以了解一下

sizeof 和 strlen 是两个常用于 C/C++ 语言中的函数或操作符,它们在功能和使用场景上有很大区别。

1. sizeof 操作符

示例:

#include <stdio.h>

int main() {
    int a = 10;
    char str[] = "Hello";
    
    printf("Size of int: %lu\n", sizeof(a));              // 返回 4(假设int为4字节)
    printf("Size of char array: %lu\n", sizeof(str));     // 返回 6(包括'\0')
    
    return 0;
}

输出:

Size of int: 4
Size of char array: 6

2. strlen 函数

示例:

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

int main() {
    char str[] = "Hello";
    
    printf("Length of string: %lu\n", strlen(str));      // 返回 5
    
    return 0;
}

输出:

Length of string: 5

strlen(str) 返回字符串 "Hello" 的长度,不包括终止符 '\0',因此返回 5。

3. sizeof 与 strlen 的主要区别

特性sizeofstrlen
功能计算数据类型或变量占用的总字节数计算字符串中字符的长度,不包含 '\0'
作用对象可以作用于任何数据类型仅限于以 '\0' 结尾的字符串
是否包含 \0包含字符串的 '\0'(对 char[] 而言)不包含 '\0'
计算时机编译时计算运行时计算
返回值返回占用内存的总字节数返回字符串中的字符数,不包括末尾的 \0
适用范围基本类型、数组、结构体、指针等仅适用于 C 风格的字符串

4. 对字符串的对比示例

假设我们有如下代码:

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

int main() {
    char str[] = "Hello";
    
    printf("sizeof(str): %lu\n", sizeof(str));     // 6 (包含 '\0')
    printf("strlen(str): %lu\n", strlen(str));     // 5 (不包含 '\0')
    
    return 0;
}

输出:

sizeof(str): 6
strlen(str): 5

5. 指针与数组的差异

当我们使用指针时,sizeof 的行为会有所不同。例如:

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

int main() {
    char *str = "Hello";
    
    printf("sizeof(str): %lu\n", sizeof(str));    // 8 (假设指针是 8 字节)
    printf("strlen(str): %lu\n", strlen(str));    // 5 (计算指向的字符串长度)
    
    return 0;
}

输出:

sizeof(str): 8
strlen(str): 5

总结

到此这篇关于C语言中sizeof 和 strlen的区别的文章就介绍到这了,更多相关C语言 sizeof 和 strlen内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文