考点: siezof 与strlen char butf[6]=(0,1,2,3,4,5,6,0) aizeof (buff)= strien (buff)=
时间: 2024-09-19 14:11:52 浏览: 28
`sizeof` 和 `strlen` 都是 C/C++ 中用于字符串处理的不同函数,但它们的作用不同:
1. **sizeof** 是一个运算符,它返回的是数据类型的大小,而不是实际存储的内容长度。例如,在这个例子中:
```c
char buff[6] = (0, 1, 2, 3, 4, 5, 6, 0);
sizeof(buff) // 返回的是数组 buff 的字节数,即6(包括结尾的0),因为数组长度是固定的。
```
2. **strlen** 函数(在标准库中通常声明为 `size_t strlen(const char *str)` 或 `size_t strlen(const char str[])`),则是计算给定 null-terminated 字符串的实际字符数(不包括结尾的空字符 '\0')。对于 `buff` 这样的数组,`strlen(buff)` 只会计数到第一个空字符为止,不会包括最后一个多余的 '0',所以结果应该是5。
总结一下:
- `sizeof(buff)` 返回的是整个数组 `buff` 占用的内存空间(6个字节)。
- `strlen(buff)` 返回的是字符串 "0,1,2,3,4,5" 中的有效字符数(5个)。
阅读全文