MapStruct myMap[50][50];
所以我们可以像这样初始化
myMap[0][0].left = 0;myMap[0][0].up = 1;myMap[0][0].right = 5;
我知道我也可以使用下面的例子,
MapStruct myMap[50][50] = { {0,1,5},{2,3,7},{9,11,8} ... };
但问题是这个50×50结构中存在明显的空白点.例如,从[30] [40]到[40] [50]可能是空的
这里有一些其他点,并且有空,所以使用上面的括号表示法我必须为这些空点留下空括号,如{},{},{}.
现在我的问题是有没有办法在下面初始化类似的?
myMap[0][0] = {0,5}; // gives a Syntax error
每点保存两行我会很满意.
Ps:我使用索引myMap [x] [y]作为字典对象的键,所以我不能在中间摆脱那些空的因为这会改变索引.
解决方法 C99允许myMap[0][0] = (MapStruct){0,5};
如果您受限于C90,则可以使用辅助功能.
mypMap[4][2] = makeStruct(3,6,9);
但请注意
MapStruct myMap[50][50];
如果没有初始化程序,函数中的函数将不会使用0值初始化数组,因此您必须使用
MapStruct myMap[50][50] = {0};
并且还要注意,人们可能想知道在堆栈上分配如此大的数组是否是wize.
总结以上是内存溢出为你收集整理的在一行中初始化一个struct数组? (在C中)全部内容,希望文章能够帮你解决在一行中初始化一个struct数组? (在C中)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)