C++ 如何将一个静态结构体数组初始化?

发布网友 发布时间:2022-04-25 01:17

我来回答

5个回答

热心网友 时间:2023-10-19 05:34

  结构体也可以有构造函数,用默认构造函数就可以在new数组的时候初始化。
  如果需要成员有初始值,则需要写构造函数,否则直接memset初始化为0即可。
  参考如下:
  struct _tagA
  {
  int a1;

  _tagA()
  {a1 = 1;}
  }a[100];
  memset(&a, 0, sizeof(a));

热心网友 时间:2023-10-19 05:34

1. 写构造函数来 给默认值
你这个是C++ 的语法,C++ 中 结构体和类的使用是等同的 只有细微的差别 所以他可以有构造函数

2.自己赋值 满足自己的初始需要 比 构造函数灵活点 方法:
struct MyStruct
{
string name;
int a;
};
class A
{
public:
static struct MyStruct myStruct[10][1];
};
MyStruct A::myStruct[10][1] = {{"123",1},{"123",1},{"123",1},{"123",1},{"123",1},{"123",1},{"123",1},{"123",1},{"123",1},{"123",1}};

在类外面这样赋值就可以了
调用的时候:
int main()
{
cout<< A::myStruct[0][0].name.c_str();
getchar();
return 0;
}

我实在linux 给你调试的 所以 CString 改为了 string 你改回去就可以了 测试OK ,望采纳~~追问嗯哪,谢谢~不过可不可以不都写完10个?
MyStruct A::myStruct[10][1] = {{"123",1},};这样? 我试试~

追答是不可以的,结构体的赋值 和 数组的赋值不一样, 如果你是想让每一个初始化成一样的值 ,那么建议你实现结构体的构造函数

struct MyStruct
{
string name;
int a;
MyStruct()

{
name = "123";

a = 1;

}
};

热心网友 时间:2023-10-19 05:35

struct有个构造函数就行了。。。追问struct 好像是不能有构造函数的

追答C++可以有,还能有成员函数,私有成员和公共成员,运算符重载都行。。。Struct的成员默认的都是公有的,类全是默认私有,区别仅此而已,其他的貌似和类没区别(反正我没发现),他也可以继承一个类。。。

热心网友 时间:2023-10-19 05:35

#include<iostream>
#include<string>
using namespace std;
struct MyStruct
{
string name;
int a;
};
class A
{
public:
static MyStruct myStruct[3];
};
MyStruct A::myStruct[3]={{"xiao",1},{"ji",2},{"ba",3}};
int main()
{
A a;
cout << a.myStruct[0].name << a.myStruct[0].a << endl;
}

热心网友 时间:2023-10-19 05:36

直接赋值不久行了吗

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com