C语言sizeof和strlen区别小结

 更新时间:2024年01月29日 08:36:25   作者:匠心码农  
C语言中的sizeof和strlen是两个常用的操作符/函数,但它们的功能和用途有很大的区别,本文就详细的来介绍一下C语言sizeof和strlen区别,具有一定的参考价值,感兴趣的可以了解一下

介绍

在C语言中,sizeof 和 strlen 的区别主要在于它们的作用和使用场景:

  • sizeof

    • 是C语言中的一个关键字(运算符),它在编译时就能确定结果。
    • 用于计算类型或变量在内存中所占的空间大小,单位是字节。
    • 对于数组名,sizeof 返回整个数组占用的内存空间,而不依赖于数组当前存储的内容。
    • 对于指针变量,sizeof 计算的是指针本身所占的空间大小,通常是一个机器字长(比如32位系统上通常是4字节,64位系统上通常是8字节)。
    • 示例:sizeof(int) 返回整型变量所占的字节数;sizeof(array) 返回数组占用的总字节数。
  • strlen

    • 是C标准库提供的一个函数,定义在 <string.h> 头文件中。
    • 在运行时动态计算非空字符数组(即字符串)中连续出现的有效字符个数,直到遇到结束符 \0(null字符)为止。
    • 不计算结束符\0的长度,只返回实际可打印字符的数量。
    • 示例:strlen("Hello, World!") 将返回12,因为字符串中有12个有效的ASCII字符。

sizeof和strlen在处理字符串区别

sizeof 和 strlen 可以用于处理字符串,但它们的功能和使用方式有所不同。

  • sizeof 运算符:
    sizeof 是 C 语言中的一个运算符,用于获取数据类型或变量在内存中所占的字节数。对于数组,sizeof 返回整个数组的大小(以字节为单位)。对于字符串,sizeof 返回的是整个字符串数组的大小,包括终止字符 '\0'

使用示例:

#include <stdio.h>

int main() {
    char str[] = "Hello, World!";
    printf("Size of string: %zu\n", sizeof(str));
    return 0;
}
  • strlen 函数:
    strlen 是标准 C 库中的一个函数,位于 string.h 头文件中。它用于计算字符串的长度,但不计算终止字符 '\0'。因此,如果字符串中没有 '\0'strlen 将一直读取内存,直到遇到一个 '\0,这可能会导致未定义的行为。

使用示例:

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

int main() {
    char str[] = "Hello, World!";
    printf("Length of string: %zu\n", strlen(str));
    return 0;
}

处理字符总结

  • sizeof 是一个运算符,用于获取数据类型或变量的大小(以字节为单位)。对于字符串数组,它返回整个数组的大小,包括终止字符 '\0'
  • strlen 是一个函数,用于计算字符串的长度(不包括终止字符 '\0')。
  • 在处理字符串时,如果你需要获取整个数组的大小(包括终止字符),可以使用 sizeof。如果你只需要获取字符串的长度(不包括终止字符),可以使用 strlen

总结

sizeof 关注的是数据类型的大小或者是变量在内存中静态分配的空间大小,而 strlen 则关注的是以 \0 结尾的字符串的实际字符长度。

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

相关文章

  • 浅谈C语言的字符串分割

    浅谈C语言的字符串分割

    下面小编就为大家带来一篇浅谈C语言的字符串分割。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • C++ 关于MFC多线程编程的注意事项

    C++ 关于MFC多线程编程的注意事项

    这篇文章主要介绍了C++ 关于MFC多线程编程的注意事项的相关资料,需要的朋友可以参考下
    2015-06-06
  • C语言实现学生信息管理系统

    C语言实现学生信息管理系统

    这篇文章主要为大家详细介绍了C语言实现学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • vs code 配置python虚拟环境的方法

    vs code 配置python虚拟环境的方法

    这篇文章主要介绍了vs code 配置python虚拟环境的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • C++深入浅出讲解隐藏this指针的用法

    C++深入浅出讲解隐藏this指针的用法

    在C++中,每一个对象都能通过this指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象
    2022-05-05
  • opencv实现多张图像拼接

    opencv实现多张图像拼接

    这篇文章主要为大家详细介绍了opencv实现多张图像拼接功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • C语言实现多项式的相加

    C语言实现多项式的相加

    这篇文章主要为大家介绍了C语言实现多项式的相加,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • C++ LeetCode1812判断国际象棋棋盘格子颜色

    C++ LeetCode1812判断国际象棋棋盘格子颜色

    这篇文章主要为大家介绍了C++ LeetCode1812判断国际象棋棋盘格子颜色, 有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • 探讨C语言的那些小秘密之断言

    探讨C语言的那些小秘密之断言

    我尽可能的把我所理解的断言的使用讲解清楚,希望我在此所讲的断言能够对你有所帮助,让你以后能够在代码中灵活使用断言
    2013-09-09
  • C++之vector容器的的声明初始化和增删改查

    C++之vector容器的的声明初始化和增删改查

    这篇文章主要给大家介绍了关于C++vector容器的的声明初始化和增删改查的相关资料,向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container),跟任意其它类型容器一样,它能够存放各种类型的对象,需要的朋友可以参考下
    2021-07-07

最新评论