C 常量数组的默认值(不是所有索引都显式设置时)?
我到处找了又找不到答案。我想知道的是: 如果我声明一个C 常量数组的默认值(不是所有索引都显式设置时)?,c,arrays,constants,C,Arrays,Constants,我到处找了又找不到答案。我想知道的是: 如果我声明一个静态无符号字符常量数组[256]={[0]=},, 我是否可以期望未指定的元素(在本例中,除了索引0处的元素之外的所有元素)具有特定的值,或者它们是随机的 我需要这个常量查找表,它不会填充所有元素,但不会太大,所以浪费一些空间不是问题 欢迎对更合适的数据类型或约定提出建议 谢谢 数组的其余部分将初始化为零 此外,还可以初始化数组中的多个元素,例如: char arr[10] = {1, 2, 3}; 将创建阵列arr并将其初始化为: ind
静态无符号字符常量数组[256]={[0]=}代码>,,
我是否可以期望未指定的元素(在本例中,除了索引0
处的元素之外的所有元素)具有特定的值,或者它们是随机的
我需要这个常量查找表,它不会填充所有元素,但不会太大,所以浪费一些空间不是问题
欢迎对更合适的数据类型或约定提出建议
谢谢 数组的其余部分将初始化为零
此外,还可以初始化数组中的多个元素,例如:
char arr[10] = {1, 2, 3};
将创建阵列arr并将其初始化为:
index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
---------------------------------------------
value | 1 | 2 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0
如果您想要某些特定的行为,那么以这种方式初始化它。假设程序正确运行所依赖的编译器的某些怪癖只是自找麻烦。如果您想明确说明它,并且您使用的是gnu c,那么总会有…
:
char array[256] = {[0 ... 255] = 0, [7] = 'f',/*and so on...*/};
初始值设定项中未指定的元素有一个定义良好的值。谢谢,现在我可以安全地走了。:)不,并非总是有…
。这是特定于gcc的扩展,不是语言的一部分。为0使用范围是多余的,但对其他值可能有用。我理解这是多余的,但它澄清了意图。它表明您依赖于零初始化数据。出于同样的原因,我使用malloc
然后使用memset
,而不仅仅是calloc
。