一.strlen函数
1.定义
strlen函数是用于计算字符串长度的函数
2.基本格式
strlen("字符串/字符数组")注:strlen函数要包含头文件#include <string.h>
3.逻辑
strlen函数是将strlen函数()内的字符串的长度作为其函数的返回值,即从括号内起始字符开始逐个向后计算,直到 \0 为止
注:计算字符串长度时不会将\0包含在内
4.使用方法
注:1.即使\0不在末位,在中间也会立即停止运算
2.如果结尾没有\0就会出现错误,读出一串乱码(如:烫烫烫烫烫烫)
二.sizeof运算符
1定义
sizeof 是 C语言中的一个关键字也是一个一元操作符,专门用来计算数据类型/变量/表达式的长度,单位是字节
2. 基本语法
sizeof(类型)sizeof表达式打印时要用%zu打印
printf("%zu",sizeof(类型))3.特点/逻辑
(1)sizeof计算的是占用内存大小,不是字符串长度
(2)会将字符串末尾的\0计算在内
(3)sizeof的返回值返回的是字节数
(4)sizeof后的()中的表达式是不赋值的
三. sizeof 与 strlen 的区别
| 特性 | sizeof | strlen |
|---|---|---|
| 性质 | 运算符(编译时) | 库函数(运行时) |
| 作用对象 | 类型、变量、表达式 | 以 ‘\0’ 结尾的字符串 |
| 计算内容 | 内存字节数 | 字符个数(不计 ‘\0’) |
| 对字符串 | 包含 ‘\0’ | 不包含 ‘\0’ |
| 示例 | sizeof(“AB”) → 3 | strlen(“AB”) → 2 |
四. 总结
strlen 函数和 sizeof 运算符是 C 语言中两个相似却用途不同的工具:
strlen`函数
- 用途:计算以’\0’结尾的字符串的实际字符长度
- 特点:运行时计算,不包含结束符 ‘\0’
- 注意事项:必须包含<string.h>头文件;字符串必须以 ‘\0’`结尾,否则会出现如烫烫烫的错误
sizeof 运算符
- 用途:计算数据类型、变量或表达式在内存中占用的字节数
- 特点:编译时计算,返回的是字节大小
- 注意事项:对字符串会包含 ‘\0’;括号内的表达式不进行赋值操作
核心区别
- sizeof 是运算符,在编译时确定结果,计算内存大小
- strlen 是库函数,在运行时计算,返回字符个数
- 对于同一个字符串,sizeof的值通常比 strlen大 1(因为包含 ‘\0’)
在实际编程中,应根据具体需求选择使用:需要知道字符串长度时用 strlen,需要知道内存大小时用 sizeof。理解两者的区别有助于避免常见的编程错误,如缓冲区溢出和内存分配不当等问题。