问题标签 [array-initialization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
793 浏览

c - C - 为结构数组创建初始化宏

我想用一个宏来做到这一点:

我不想为每个缓冲区条目写一行,而是使用

因为这真的很不方便,如果我想做64个左右的条目......

不幸的是,我对 C 预处理器没有任何经验,所以我很好奇:

  1. 有更好的非宏观解决方案
  2. gcc 有一个简单的方法来完成这个宏操作

此外,这更像是一个理论方面,是执行速度。AfaIk 第一篇文章中的示例只是一个 memcpy(.data[?], _timer_llists, sizeof(_timer_llists)),而编程方法至少需要一个计数器,可能是最后一种情况的 if 语句,以及一个函数开销(好的,也许是内联的)。另一方面,这将节省 .data 中的空间。

在这种特殊情况下,我使用的是 gcc-avr,但这个问题反复出现在我的脑海中,我希望有一个通用的方法。

0 投票
2 回答
193 浏览

c++ - 这些在 C++ 中初始化 C 数组的方式有区别吗?

我想将数组的所有成员初始化为零,或者nullptr

我知道当将至少一个成员初始化为任何值时,所有其他成员都初始化为零,所以如果我这样做:

第一个成员变为6,其余所有成员均为零初始化。但是我很困惑:

我假设没有等号的声明之后的空波浪括号是所谓的零初始化,而不是默认初始化,但也是如此int list[4]{0},不是吗?这是否涉及std::initializer_list幕后?我以为这些只用于非 POD 类型,所以std::initializer_list这里没有使用吗?

0 投票
3 回答
394 浏览

c - 如何仅初始化字符数组的一部分?

我知道 C 的(非常简洁的)数组初始化语法,比如

初始化数组中的一些特定成员,但是有没有办法用字符串初始化整个数组块?像这样:

是否有允许它的内置语法?还是我必须坚持memcpy()

是我目前拥有的;filename是被指控的字符数组,而basename是一个变量字符串。

0 投票
3 回答
2905 浏览

c# - 声明一个队列数组

我的代码中的语言语法问题是什么?我想声明一个队列数组。这是声明和使用它们的正确方法吗?

0 投票
0 回答
60 浏览

c++ - 在数组的初始化中使用前一个元素的值

所以我发现这段代码有效

这正式合法吗?我以为我在initializer_list这里做一个,但如果我可以访问以前初始化的元素,这一定是在做聚合初始化。

我试图找到有关此合法性的官方声明,但我似乎找不到。

0 投票
0 回答
46 浏览

c++ - 防止在数组初始化程序中将每个整数值指定为无符号

N考虑以下函数,它引用在编译时推导出的大小数组:

我想用这样的数组初始化器来调用它:

这可行,但我不想u在每个值之后指定(实际数组可能更长)。我可以对函数签名或在调用站点做些什么来避免这种情况吗?

请注意,我需要数组实际上是内部的无符号类型array_consumer(而且我真的不想制作副本),因此将签名更改为int const (&source)[N])不起作用。

0 投票
1 回答
733 浏览

c++ - 在编译时分配数组的值并将枚举作为索引(C++)

我正在尝试通过枚举使用 C 风格的数组作为映射,但我不能按部分初始化数组......我将通过代码更好地解释自己:
我有类似的东西:

我有:

这实际上是我想要的方式,即

但是通过这种方式,我必须确保我以相同的顺序声明枚举和数组。我想做这样的事情:

我知道这可以工作,但我需要在一个函数中执行它并调用它,所以运行时间。我想在编译时执行它,因为有永远不会改变的常量值,并且在运行时执行它是一种浪费。
我也知道constexpr可以通过 lambda 函数做到这一点,但我不知道该怎么做

0 投票
1 回答
500 浏览

c++ - 是否允许递归初始化数组?

我有以下代码片段:

是否允许这样的初始化或导致未定义的行为?

三个主要编译器(gcc、clang、msvc)为我42提供了i[1]. 因此看起来是合法的,但我想从这个案例的标准中看到一个引用。

0 投票
2 回答
82 浏览

c - gcc 编译器报告警告,但 a.out 工作顺利,否则

我正在关注《C Primer Plus》这本书,遇到了这样一段代码:

当我编译它时它会报告错误:

尽管如此,./a.out工作正常。

我很困惑我应该从错误报告中学到什么?

0 投票
2 回答
1913 浏览

c - ARM 程序集 memcpy 等效项

我正在查看此函数的汇编输出:

它看起来像这样

我完全不知道从哪里复制.L4到堆栈?

我看到堆栈指针被移动了 16B,并且我看到了 的adds指令'0'+x,但是哪条指令复制了数据?

抱歉新手问题,谢谢!