首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C中的数组初始化中方括号是什么意思?

在C中的数组初始化中方括号是什么意思?
EN

Stack Overflow用户
提问于 2012-03-24 14:44:01
回答 1查看 10.4K关注 0票数 88
代码语言:javascript
复制
static uint8_t togglecode[256] = {
    [0x3A] CAPSLOCK,
    [0x45] NUMLOCK,
    [0x46] SCROLLLOCK
};

这里的[0x3A]是什么意思?我只学过像int a[2] = {1, 2};这样的语句

EN

回答 1

Stack Overflow用户

发布于 2012-03-24 14:50:17

这是在C99中引入的,它被称为designated initialiser

它基本上允许你在一个数组中设置特定值,其余的作为默认值。

在这种特殊情况下,数组索引是键盘扫描码。0x3aCapsLock密钥的scan code in set #1 (参见第10.6节),0x45NumLock,0x46是ScrollLock

在上面的第一个链接中,它声明:

代码语言:javascript
复制
int a[6] = { [4] = 29, [2] = 15 };

等同于:

代码语言:javascript
复制
int a[6] = { 0, 0, 15, 0, 29, 0 };

有趣的是,尽管链接指出=是必需的,但这里似乎不是这样。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9849719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档