返回首页

大家好,

如果我定义一个结构,必须有大小?例如200

struct	LibCont_dat LCdat[200];
我能做些什么,如果我希望有一个struct的大小不受限制?

感谢在前进。

回答

评论会员:游客 时间:2012/02/07
OriginalGriff:这并不定义一个大小为结构-结构定义不。这代码不申报阵列结构-200-他们以同样的方式,codeprelang="c++"spanclass="code-keyword"int/spanar[spanclass="code-digit"100/span];/pre/code定义100个整数的数组。如果你的意思是"我可以定义一个数组,我不指定元素的数量,它可以是任意大小,我想?"则没有。你必须总是说你需要多少个元素,当你声明的数组。如果你想存储结构元素的数量是不固定的,并可以随时添加新的,我建议你在使用链表,而不是看
SAKryukov:你的代码,甚至不会编译。

你可以做这样的事情。这里是一个原始的方法,是非常流行的Windows API:

struct VariableSizeStructure {

    int someData;

    //...

    int Array[1]; //it can only come at the end

};

使用这种结构,分配一些堆内存结构的大小。例如,如果您需要n个元素,分配的大小如sizeof(int)*(N - 1)。sizeof(VariableSizeStructure)的指数由指数0到N-1,
阵列
[编辑]

我没有办法推荐这种,如果代码在新的开发设计。这种技术是很好的了解仅仅是因为某些API使用它,但这种做法本身就是烂。不要使用自己的代码设计!

我真的很感谢下面由Stephan宝贵的意见。显然,本来我失败了,更何况这种做法的危险,不晚,现在就做。 {S0的}

mdash;水杨酸
评论会员:什穆埃尔臧 时间:2012/02/07

您发布的代码定义一个数组元素(它没有结构的大小)与类型LibCont_dat 200。
如果你想要一个可扩展的阵列尝试使用
评论会员:游客 时间:2012/02/07
的。Pranit科塔:如果你想无限(或预定)元素的数量,像数据结构的链接列表是有用的。数组,你必须知道你想要的成员数目是以前......使用链接列表......的方式的std::vector和std::list的也是不错的选择,如果你是使用STL确定
DKNTH
评论会员:游客 时间:2012/02/07
您好检查这些链接,它可能对您有所帮助..{A}imgsrc={A3的}希望它可以帮助有一个微笑{S0}