如何在C中声明一个元素数组

时间:2014-09-12 08:51:43

标签: c arrays

我需要确定以下是否属实。

如果我想在C中声明一个只有一个元素的数组:

char array[1];

右?我会用索引0为它赋值。例如:

array[0] = 'S';

并没有为数组[1]预留内存存储空间。即使我用:

声明了数组
char array[1];

我问,因为我发现它有点违反直觉,因为数组以索引0开头。所以我认为我应该声明一个包含这样一个元素的数组:

char array[0];

然后去找一个像上面这样的值:

array[0] = 'S';

但是通过一些测试来证明使用:

的单元素数组似乎是错误的
char array[0];

2 个答案:

答案 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开始。)