C++字符数组操作:初始化、修改、长度计算及内存空间分析
#include <iostream>
#include <cstring>
int main() {
// 初始化长度为20的字符数组
char arr[20] = 'Hello, world!';
std::cout << '初始数组内容:' << arr << std::endl;
// 修改数组元素
arr[5] = '!';
arr[7] = 'o';
// 使用'\0'表示字符串结束
arr[12] = '\0';
std::cout << '修改后的数组内容:' << arr << std::endl;
// 计算数组占用的内存空间
std::cout << '数组占内存空间的长度:' << sizeof(arr) << ' 字节' << std::endl;
// 计算数组中有效字符的个数
std::cout << '数组中有效字符的个数:' << strlen(arr) << ' 个字符' << std::endl;
return 0;
}
代码解析
- 首先,我们定义了一个长度为20的字符数组
arr,并使用字符串 'Hello, world!' 进行初始化。 - 然后,我们修改了数组中的部分元素,将
arr[5]修改为 '!',arr[7]修改为 'o',arr[12]修改为 '\0'。- 需要注意的是,'\0' 是字符串的结束标志,它表示字符串的有效内容到此为止。
- 接着,我们使用
sizeof(arr)计算数组占用的内存空间大小,使用strlen(arr)计算数组中有效字符的个数。
sizeof(arr) 和 strlen(arr) 的区别
sizeof(arr)返回的是数组类型占用的总字节数,包括所有元素,无论是否被使用。strlen(arr)返回的是数组中有效字符的个数,即从数组起始位置到遇到第一个 '\0' 字符为止的字符数量。
结论
由于 sizeof(arr) 计算的是整个数组的内存空间,而 strlen(arr) 只计算有效字符的数量,因此通常情况下 sizeof(arr) 的值会大于等于 strlen(arr) 的值。
补充
- 如果需要计算数组的元素个数,可以使用
sizeof(arr) / sizeof(arr[0]),其中sizeof(arr)表示数组的总字节数,sizeof(arr[0])表示数组中单个元素的字节数。 - 在实际编程中,建议使用
strlen(arr)来获取字符串的长度,因为它更加准确地反映了字符串中有效字符的数量。
原文地址: https://www.cveoy.top/t/topic/b6ba 著作权归作者所有。请勿转载和采集!