21xrx.com
2024-12-22 20:56:36 Sunday
登录
文章检索 我的文章 写文章
如何在C++中清空结构体数组
2023-07-05 02:55:14 深夜i     --     --
C++ 结构体数组 清空

在C++中,结构体数组是一种常见的数据结构,它可以用来存储多个相似的数据类型。然而,在实际使用过程中,我们可能需要清空结构体数组的内容以便重新使用。本文将介绍如何在C++中清空结构体数组。

方法一:使用memset函数

memset是C++中的一个标准库函数,可以将一段内存空间设置为同一个字节值。可以利用这个函数清空结构体数组的内容。具体使用方法如下:


#include <cstring>

#include <cstdlib>

struct Student {

  int id;

  char name[20];

  int age;

};

int main() {

  Student stu[5];

  // 暂时赋值

  for (int i = 0; i < 5; i++) {

    stu[i].id = i;

    strcpy(stu[i].name, "Tom");

    stu[i].age = 18;

  }

  // 清空

  memset(stu, 0, sizeof(stu));

  // 输出

  for (int i = 0; i < 5; i++) {

    std::cout << "id:" << stu[i].id << " name:" << stu[i].name << " age:" << stu[i].age << std::endl;

  }

  return 0;

}

上述代码中,我们声明了一个结构体数组Student stu[5],并且使用for循环暂时赋值。然后使用memset函数将其内容清空。最后再次使用for循环输出,可以看到所有成员变量都被设置为0或空值。需要注意的是,使用memset函数清空结构体数组时,内存空间大小应该为sizeof(array)。

方法二:使用循环赋值

除了使用memset函数外,我们还可以使用循环赋值的方法清空结构体数组。具体做法是将每个结构体的成员变量都赋值为0或空值。如下所示:


struct Student {

  int id;

  char name[20];

  int age;

};

int main() {

  Student stu[5];

  // 暂时赋值

  for (int i = 0; i < 5; i++) {

    stu[i].id = i;

    strcpy(stu[i].name, "Tom");

    stu[i].age = 18;

  }

  // 清空

  for (int i = 0; i < 5; i++) {

    stu[i].id = 0;

    strcpy(stu[i].name, "");

    stu[i].age = 0;

  }

  // 输出

  for (int i = 0; i < 5; i++) {

    std::cout << "id:" << stu[i].id << " name:" << stu[i].name << " age:" << stu[i].age << std::endl;

  }

  return 0;

}

上述代码中,我们同样使用for循环暂时赋值结构体数组,然后使用另一个for循环将结构体数组的成员变量赋值为0或空值。最后再次使用for循环输出,可以看到结构体数组的内容已经被清空。

综上所述,在C++中清空结构体数组可以采用memset函数或循环赋值的方法。使用哪种方法取决于个人习惯和实际需求。无论使用哪种方法,都需要注意结构体数组的内存空间大小与清空的内容,避免出现意外的错误。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复