繁体   English   中英

指向结构数组的指针

[英]Pointer to Array of Struct

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

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

有没有一种方法可以一次初始化所有char数组成员?

编辑:我知道我可以使用字符串或向量,但是我只是出于好奇而想知道。

是。 您可以通过对数组进行值初始化将它们初始化为全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 }
};

不,对不起 您需要遍历并分配值。

如果我没记错的话,可以在该结构中添加一个构造函数,以将值初始化为默认值。 如果与您在类中使用的内容不同,则这是相似的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM