指向结构数组的指针

时间:2010-09-04 21:21:20

标签: c++ arrays

struct bop
{
    char fullname[ strSize ];
    char title[ strSize ];
    char bopname[ strSize ];
    int preference;
};

int main()
{
    bop *pn = new bop[ 3 ];

有没有办法一次初始化char数组成员?

编辑:我知道我可以使用字符串或矢量,但我只想知道好奇心。

3 个答案:

答案 0 :(得分:2)

是。您可以通过值初始化数组

将它们初始化为全0
bop *pn = new bop[ 3 ]();

但实际上我更喜欢使用std::stringstd::vector,就像一些评论者说的那样,除非你需要那个结构与一些不理解高级结构的接口实际上是字节兼容的。如果你确实需要这种简单的设计,那么你仍然可以在堆栈上初始化并复制。例如,“初始化”第一个元素

bop b = { "bob babs", "mr.", "bobby", 69 };
memcpy(pn, &b, sizeof b);

请注意,在C ++ 0x中,您可以说

bop *pn = new bop[3] {
  { "bob babs", "mr.", "bobby", 0xd00d }, 
  { ..., 0xbabe }, 
  { ..., 69 }
};

答案 1 :(得分:1)

不,抱歉。你需要循环并分配值。

答案 2 :(得分:0)

如果我没弄错,你可以在结构中添加一个构造函数,将值初始化为默认值。如果与您在课程中使用的内容完全相同,则类似。