开发者社区 问答 正文

如何将数组的所有成员初始化为相同的值?

我在C中有一个大型数组(如果有所不同,则不是C ++)。我想将所有成员初始化为相同的值。我可以发誓曾经有一种简单的方法可以做到这一点。我可以memset()在我的情况下使用,但是没有办法直接在C语法中内置吗?

展开
收起
保持可爱mmm 2020-01-13 17:15:23 500 分享 版权
1 条回答
写回答
取消 提交回答
  • 除非该值为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

    2020-01-13 17:15:47
    赞同 展开评论
问答地址: