我在C中有一个大型数组(如果有所不同,则不是C ++)。我想将所有成员初始化为相同的值。我可以发誓曾经有一种简单的方法可以做到这一点。我可以memset()在我的情况下使用,但是没有办法直接在C语法中内置吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
除非该值为0(在这种情况下,您可以省略初始化程序的一部分,并且相应的元素将被初始化为0),否则没有简单的方法。
但是,请不要忽略明显的解决方案:
int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
缺少值的元素将被初始化为0:
int myArray[10] = { 1, 2 }; // initialize to 1,2,0,0,0...
因此,这会将所有元素初始化为0:
int myArray[10] = { 0 }; // all elements 0
在C ++中,空的初始化列表还将每个元素初始化为0。C 不允许这样做:
int myArray[10] = {}; // all elements 0 in C++
请记住,如果未指定初始化程序,则具有静态存储持续时间的对象将初始化为0:
static int myArray[10]; // all elements 0
而且“ 0”并不一定意味着“全零位”,因此使用上面的方法比memset()更好,更可移植。(浮点值将初始化为+0,指针指向空值,等等。)
问题来源于stack overflow