📅  最后修改于: 2023-12-03 15:29:49.254000             🧑  作者: Mango
在C++中,字符数组是一组相邻存储的字符,在声明时可以指定大小,数组中的元素可以通过下标进行访问和修改。但是当我们使用字符数组的时候,有时候需要清空数组中的内容,以便我们重新使用它。本文将介绍如何在C++中清空字符数组。
memset函数可以将一段内存空间的值全部设置为指定的值,因此我们可以使用memset函数来清空字符数组。memset函数的定义如下:
void * memset ( void * ptr, int value, size_t num );
其中,ptr是需要清空的内存空间的指针,value是要设置的值,num是要设置的字节数。
下面是使用memset清空字符数组的示例代码:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char str[10] = "hello";
cout << "Before clear: " << str << endl;
memset(str, '\0', sizeof(str));
cout << "After clear: " << str << endl;
return 0;
}
输出结果:
Before clear: hello
After clear:
除了使用memset函数之外,我们还可以使用循环逐个清空数组中的元素。这种方法在数组比较小的情况下用起来比较方便,但是对于大数组来说效率较低。
下面是使用循环清空数组的示例代码:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char str[10] = "hello";
cout << "Before clear: " << str << endl;
for(int i=0; i<sizeof(str); i++)
{
str[i] = '\0';
}
cout << "After clear: " << str << endl;
return 0;
}
输出结果:
Before clear: hello
After clear:
赋值语句也可以清空数组中的元素。我们可以使用循环来逐个赋值为'\0',也可以使用数组名作为指针来一次性赋值。这种方法比循环逐个清空要快一些。
下面分别是使用循环和一次性赋值来清空数组的示例代码:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char str[10] = "hello";
cout << "Before clear: " << str << endl;
for(int i=0; i<sizeof(str); i++)
{
str[i] = '\0';
}
cout << "After clear 1: " << str << endl;
char str2[10] = "world";
cout << "Before clear: " << str2 << endl;
memset(str2, '\0', sizeof(str2));
cout << "After clear 2: " << str2 << endl;
return 0;
}
输出结果:
Before clear: hello
After clear 1:
Before clear: world
After clear 2:
本文介绍了在C++中清空字符数组的三种方法:使用memset函数、使用循环逐个清空、使用数组名作为指针来一次性赋值。其中使用memset函数是最常用的方法,因为它可以更快速地实现清空操作。