[经验分享] strlen sizeof的区别

[复制链接]
6036|39
 楼主| primojones 发表于 2024-2-18 20:31 | 显示全部楼层 |阅读模式

1、C语言中strlen函数用来求字符串的长度
      头文件:string.h
     函数原型:size_t strlen(const char *str);
     参数str表示要求长度的字符串;
    功能:strlen()函数从字符串的开头位置依次向后计数,直到遇到‘\0’为止,停止计数。返回的值中不包括‘\0’
2、sizeof单目运算符
     它的参数可以是数组、指针、类型、对象、函数等
例:char s[]="ILOVEC";
        strlen(s)=6
        sizeof(s)=7 //对 sizeof 而言,因为缓冲区已经用已知字符串进行了初始化,其长度是固定的,所以 sizeof 在编译时计算缓冲区的长度。也正是由于在编译时计算,因此 sizeof 不能用来返回动态分配的内存空间的大小。

10299823 发表于 2024-3-4 14:26 | 显示全部楼层
strlen 是一个函数,用于计算字符串的长度。
它返回字符串中字符的个数,不包括结束符 '\0'。
strlen 需要包含头文件 <string.h>。
strlen 只有在运行时才能确定字符串的长度,因为它需要遍历字符串直到遇到结束符。
示例:int len = strlen("hello");,这里 len 的值为 5。
alvpeg 发表于 2024-3-4 14:38 | 显示全部楼层
strlen在计算字符串长度时不会考虑字符串缓冲区的大小,只计算实际字符的数量。
febgxu 发表于 2024-3-7 12:13 | 显示全部楼层
sizeof是一个C语言运算符,用于计算数据类型或变量所占的内存字节数。它可以用于计算数组、指针、类型、对象、函数等的大小。sizeof返回的是字节(byte)数量,而不是字符数量。
kkzz 发表于 2024-3-9 17:14 | 显示全部楼层
sizeof计算的是数据类型或对象的大小,而不是字符串的长度。如果要计算字符串的长度,应该使用strlen函数。
lzmm 发表于 2024-3-9 21:19 | 显示全部楼层
strlen 返回的是字符串中字符的个数,而 sizeof 返回的是变量或类型在内存中的大小(以字节为单位)。
updownq 发表于 2024-3-11 13:48 | 显示全部楼层
strlen 和 sizeof 在C语言中都是用来计算有关数据大小的信息,但它们的本质和用途完全不同
wangdezhi 发表于 2024-3-11 15:45 | 显示全部楼层
sizeof操作符在计算数组大小时,会返回包括数组末尾的元素在内的总字节数。
beacherblack 发表于 2024-3-11 21:04 | 显示全部楼层
strlen是一个字符串处理函数,用于计算字符串的长度。它的参数是一个字符串指针,返回值是字符串的长度(不包括字符串末尾的空字符'\0')。strlen的实现原理是遍历字符串,直到遇到空字符'\0'为止。
youtome 发表于 2024-3-12 10:54 | 显示全部楼层
strlen 是在运行时计算字符串的长度,而 sizeof 是在编译时确定变量或类型的大小。
xiaoyaodz 发表于 2024-3-12 12:44 | 显示全部楼层
strlen是一个C语言标准库函数,需要包含头文件#include <string.h>,而sizeof是一个运算符,不需要包含头文件。
biechedan 发表于 2024-3-12 17:07 | 显示全部楼层
strlen是一个函数,它用于计算字符串的长度,即从字符串的第一个字符开始直到遇到第一个空字符('\0')为止的字符数量。它返回的是一个整型值,表示字符串的实际长度,不包括终止的空字符。需要注意的是,如果字符串没有被正确初始化或不包含终止的空字符,strlen可能会导致未定义的行为。
51xlf 发表于 2024-3-14 17:52 | 显示全部楼层
sizeof是一个运算符,它在编译时计算对象或类型所占用的内存大小,并以字节为单位返回这个大小。与strlen不同,sizeof可以用于任何类型的数据,包括数组、指针、结构体、联合体等。当用于数组时,它会返回整个数组所占用的内存大小,而不仅仅是数组中某个元素的大小。此外,当用于指针时,sizeof返回的是指针本身的大小,而不是指针所指向的内存块的大小。
vivilyly 发表于 2024-3-15 13:02 | 显示全部楼层
strlen 只适用于字符串(以 '\0' 结尾的字符数组),而 sizeof 可以用于任何数据类型。
10299823 发表于 2024-3-15 13:38 | 显示全部楼层
strlen是一个C语言标准库函数,用于计算字符串的实际长度。它返回值是字符串中字符的数量,直到遇到第一个终止字符'\0'为止。需要注意的是,strlen函数不计算终止字符'\0'本身。
phoenixwhite 发表于 2024-3-15 17:31 | 显示全部楼层
sizeof是一个编译时操作符,它返回的是编译时就确定的大小,而strlen是一个运行时函数,它返回的是程序运行时的实际长度。
updownq 发表于 2024-3-15 18:15 | 显示全部楼层
char str[] = "hello";

// strlen计算字符串的长度,不包括'\0'
int length = strlen(str); // length 的值为 5

// sizeof获取整个数组的大小,包括'\0'
int size = sizeof(str); // size 的值为 6
uiint 发表于 2024-3-15 18:41 | 显示全部楼层
sizeof运算符在处理指针时,返回的是指针变量的内存大小,而不是它指向的数据类型的大小。
mmbs 发表于 2024-3-15 19:04 | 显示全部楼层
sizeof 是一个操作符,用于获取变量、类型或对象在内存中的大小(以字节为单位)。
它返回的是编译时确定的大小,因此速度更快。
sdCAD 发表于 2024-3-15 20:33 | 显示全部楼层
strlen用于测量字符串的实际长度,而sizeof用于确定任何数据类型或对象在内存中的大小。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

1603

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部