我需要确定以下是否属实。
如果我想在C中声明一个只有一个元素的数组:
char array[1];
右?我会用索引0为它赋值。例如:
array[0] = 'S';
并没有为数组[1]预留内存存储空间。即使我用:
声明了数组char array[1];
我问,因为我发现它有点违反直觉,因为数组以索引0开头。所以我认为我应该声明一个包含这样一个元素的数组:
char array[0];
然后去找一个像上面这样的值:
array[0] = 'S';
但是通过一些测试来证明使用:
的单元素数组似乎是错误的char array[0];
答案 0 :(得分:1)
大小为1的数组只能在索引0处保存一个元素。 大小为2的数组可以在索引0和1处准确保存两个元素。 ... 大小为10的数组可以在索引0到9中保存十个元素。
大小为0的数组没有意义。它无法保存任何数据。
答案 1 :(得分:0)
C不直观,恰恰相反......
当声明数组时,您可以键入它应包含的项目数。如果您想要1个项目,则将其声明为array[1]
。没什么奇怪的。
但是,数组从0开始编制索引。因此,要访问第一个元素,您必须键入array[0]
。这实际上是有道理的 - 忘记他们在学校教你1在计算时是第一个数字,这在数学上是不正确的,0实际上是第一个。
(最终归结为:任何数字都可以根据某个公式来描述。例如,如果你有一个十进制数123
,它可以被描述为1*10^2 + 2*10^1 + 3*10^0
,其中1, 2或3是每个数字的值,10是十进制基数,幂^n
是索引。当在不同的基数之间转换时使用此公式,例如二进制,十六进制,八进制,因为它适用于每个基数。正如您所看到的,索引从最低有效数字的0开始。)