strlen和sizeof
在C语言中,strlen和sizeof都是用来计算数据类型大小的函数,但它们的作用不同。
strlen函数用于计算字符串的长度,即字符串中字符的数量,而不包括字符串结束符'\0'。因此,strlen的参数必须是一个以'\0'结尾的字符串,否则结果会不可预测。例如,对于字符串"hello",strlen函数返回值为5。
sizeof运算符用于计算数据类型或变量在内存中占用的字节数。无论是基本数据类型、数组、结构体或指针变量,sizeof都可以正确计算它们的大小。例如,sizeof(int)返回值通常是4,表示int类型在内存中占用4个字节。
因此,strlen和sizeof虽然都可以计算数据类型的大小,但作用不同,需要根据具体情况选择使用。
strlen 和 sizeof
strlen是一个C语言标准库函数,用于计算一个以null字符结尾的字符串的长度,它返回的是字符串中字符的个数,不包括null字符。当sizeof的对象是数组名时,它返回的是整个数组所占用的内存空间大小。123
引用[.reference_title]
- 1 2 C语言之——sizeof()和strlen()函数[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2
allinsert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - 3 蓝桥杯笔记[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2
allinsert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
strlen 和sizeof
C语言中 strlen
和 sizeof
的区别与使用场景
区别
strlen
是用于计算字符串实际长度的库函数,返回的是从起始位置到第一个遇到的 \0
字符之间的字符数量[^1]。
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, world!";
int length = strlen(str);
printf("字符串的长度为:%d\n", length);
return 0;
}
与此不同,sizeof
是一个操作符而非函数,在编译期即被解析,用来获取对象或类型的存储空间大小(以字节计)。对于数组而言,它会给出整个数组占用的空间;而对于指针,则只提供该指针本身所占内存大小的信息。需要注意的是,当传递给 sizeof
的是一个表达式时,这个表达式的值并不会真正参与到任何计算当中去[^2]。
使用场景
strlen
适用于需要知道动态分配或者通过其他方式获得的字符串的实际长度的情况。由于其依赖于终止零(\0
)来确定结束位置,因此非常适合处理标准C风格字符串。
sizeof
适合用来查询数据类型、变量以及静态定义数组的确切尺寸。尤其在涉及内存管理和低级编程任务时非常有用。然而,如果尝试用 sizeof
来测量指向字符串或其他结构体成员的指针,那么得到的结果将是该指针本身的宽度而不是目标实体的真实规模。
相关推荐










