在一行中初始化一个struct数组? (在C中)
发布时间:2020-12-16 09:34:42 所属栏目:百科 来源:网络整理
导读:我有这样的2d结构数组, 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
我有这样的2d结构数组,
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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |