服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - 深入解析C++中Sizeof和Strlen的奥秘:区别、应用与技巧全揭秘!

深入解析C++中Sizeof和Strlen的奥秘:区别、应用与技巧全揭秘!

2024-04-09 15:39架构师老卢 C/C++

sizeof 和 strlen 是 C++ 中用于处理字符串的两个不同的操作符,它们的作用和使用场景有很大的区别。 sizeof操作符: 区别: sizeof 是一个运算符,不是一个函数,用于获取一个类型或变量的字节大小。 对于数组,sizeof 返回整个数

深入解析C++中Sizeof和Strlen的奥秘:区别、应用与技巧全揭秘!

sizeof 和 strlen 是 C++ 中用于处理字符串的两个不同的操作符,它们的作用和使用场景有很大的区别。

sizeof操作符:

区别:

  • sizeof 是一个运算符,不是一个函数,用于获取一个类型或变量的字节大小。
  • 对于数组,sizeof 返回整个数组的字节大小。
  • 对于指针,sizeof 返回指针本身的字节大小,而不是指针指向的内存块的大小。

应用和示例:

#include <iostream>

int main() {
    int integerVar;
    double doubleVar;
    char charArray[10];
    char* charPointer;

    std::cout << "Size of int: " << sizeof(integerVar) << " bytes" << std::endl;
    std::cout << "Size of double: " << sizeof(doubleVar) << " bytes" << std::endl;
    std::cout << "Size of char array: " << sizeof(charArray) << " bytes" << std::endl;
    std::cout << "Size of char pointer: " << sizeof(charPointer) << " bytes" << std::endl;

    return 0;
}

上述代码中,sizeof 被用于获取不同类型和变量的字节大小,输出结果将显示它们在内存中占用的空间大小。

strlen函数:

区别:

  • strlen 是一个函数,用于计算字符串的长度,即字符串中的字符数,不包括终止符 \0。
  • 对于字符数组,strlen 返回数组中第一个字符到 \0 终止符的字符数。
  • 对于指针,strlen 返回指针指向的字符串的长度,同样不包括终止符 \0。

应用和示例:

#include <iostream>
#include <cstring>

int main() {
    const char* str = "Hello, World!";

    std::cout << "Length of \"" << str << "\": " << strlen(str) << " characters" << std::endl;

    char charArray[] = "C++ is fun!";
    std::cout << "Length of \"" << charArray << "\": " << strlen(charArray) << " characters" << std::endl;

    return 0;
}

上述代码中,strlen 用于获取字符串的长度,输出结果将显示每个字符串中的字符数。

注意事项:

  • sizeof 和数组: sizeof 返回整个数组的字节大小,而不是数组中的元素个数。如果需要获取数组中的元素个数,可以使用 sizeof(array) / sizeof(array[0]) 的方式。
  • strlen 和字符串终止符: strlen 计算字符串的长度时,不包括字符串终止符 \0。因此,实际存储的字符数是 strlen 返回的值加上终止符。
  • 指针的 sizeof: 对指针使用 sizeof 会返回指针本身的字节大小,而不是指向的数据的大小。要获取指针指向的数据大小,需要使用其他方式,如通过解引用指针后再使用 sizeof。

sizeof 主要用于获取数据类型或变量的字节大小,而 strlen 用于获取字符串的长度。在使用这两者时,需要注意其返回值的含义和用途,以避免出现错误。

原文地址:https://www.toutiao.com/article/7305927752069677579/

延伸 · 阅读

精彩推荐
  • C/C++C++ Qt利用GPU加速计算的示例详解

    C++ Qt利用GPU加速计算的示例详解

    这篇文章主要为大家详细介绍了在 C++ 和 Qt 中如何利用GPU加速计算,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...

    zhangzhechun15022023-05-23
  • C/C++C++ 超全面讲解多态

    C++ 超全面讲解多态

    这篇文章主要介绍了C++多态的原理与实现,多态是一种面向对象的设计思路,本身和C++不是强绑定的,其他语言当中一样有多态,只不过实现的方式可能有...

    m0_520126563482022-11-09
  • C/C++VC判断进程是否具有administrator权限的方法

    VC判断进程是否具有administrator权限的方法

    这篇文章主要介绍了VC判断进程是否具有administrator权限的方法,在Windows应用程序设计中具有一定的实用价值,需要的朋友可以参考下...

    C语言教程网11032021-02-18
  • C/C++.h和.cpp文件的区别(zt)详细介绍

    .h和.cpp文件的区别(zt)详细介绍

    特别是对源文件和头文件的概念,需要深入对它了解,本文将详细介绍,需要了解的朋友可以参考下...

    C++教程网6822020-11-12
  • C/C++C语言实现数学表达式运算

    C语言实现数学表达式运算

    这篇文章主要为大家详细介绍了c语言实现数学表达式运算,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    _牛仔很忙10032022-03-05
  • C/C++C++枚举类型enum与enum class的使用

    C++枚举类型enum与enum class的使用

    这篇文章主要介绍了C++枚举类型enum与enum class的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

    冬瓜~11092021-09-24
  • C/C++C++中的运算符和运算符优先级总结

    C++中的运算符和运算符优先级总结

    这篇文章主要介绍了C++中的运算符和运算符优先级总结,主要整理了算术、关系、逻辑、位和赋值运算符的用法,需要的朋友可以参考下...

    飞龙12422021-04-01
  • C/C++C语言结构体的全方面解读

    C语言结构体的全方面解读

    C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许你存储不同类型的数据项...

    波风张三11702022-02-15