strlen与sizeof

   strlen是一个在C/C++语言中广泛使用的字符串处理函数,其全称是“string length”的缩写,用于计算字符串的长度,即字符串中字符的个数(不包括字符串末尾的空字符‘\0’)。strlen函数从传入的字符串(实际上是字符指针)的起始位置开始,逐个字符进行遍历,直到遇到第一个空字符‘\0’为止。这个过程中,strlen会计算并返回遍历的字符个数,但不包括空字符‘\0’本身。 

  strlen函数的返回值是size_t类型,这是一个无符号整数类型,能够表示足够大的对象大小

 sizeof 是 C 和 C++ 语言中的一个操作符,用于获取对象或类型在内存中的大小(以字节为单位)。它可以在编译时计算,因为它仅仅是根据类型或变量所占的内存空间进行计算的,而不需要运行时信息。sizeof 可以应用于各种数据类型,包括基本数据类型(如 int、float、char 等)、结构体(struct)、联合体(union)、数组、指针等

  

  • 编译时计算sizeof 是在编译时计算的,因此它不能用于计算动态分配的内存(如通过 malloc 或 new 分配的内存)的大小。
  • 数组与指针的区别:在函数参数中,当数组作为参数传递时,它会被退化为指向数组首元素的指针。因此,在函数内部,使用 sizeof 操作符作用于数组参数会得到指针的大小,而不是数组本身的大小。
  • 结构体和联合体sizeof 可以用于计算结构体或联合体的大小,这取决于其成员的大小以及可能的填充(padding)字节。

本质不同:strlen是一个函数,通过遍历字符串来计算长度;而sizeof是一个操作符,用于在编译时计算变量或类型所占的内存大小。
参数类型:strlen的参数必须是字符指针(char*或const char*),且指向的字符串必须以‘\0’结尾;sizeof的参数可以是任何类型或变量,甚至是表达式。
计算时机:strlen的计算是在运行时进行的,因为它需要遍历字符串;而sizeof的计算是在编译时完成的,因为它只需要知道类型或变量在内存中的大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值