【发布时间】:2010-05-07 09:30:54
【问题描述】:
我想知道字符串和数组的索引从哪里开始。 我在制作程序时遇到了很多困惑。
在计算字符串的字符串长度时,空字符是否也算在内?
【问题讨论】:
-
只是说:在问题的末尾使用问号可能会增加可读性;特别是对于非英语为母语的人。
-
实际上,该问题包含可能不是预期的限制。如果你索引一个数组,那么实际上索引从 0 开始。但是如果你索引一个指针,你实际上可以做
array[-1],只要指针指向合适的内存。 -
@Schaub,让我们保持简单,好吗?尽管使用数组来引用不在数组中的内容可能是“合法的”,但这并不意味着这是明智或明智的做法。唯一真正合理的解释是如何访问数组的内容;而不是如何使用它访问任意内存。
-
@Michael,我不确定你想说什么“使用数组来引用不在数组中的内容”。没说过这样的话。我也没有说如何访问“任意内存”。我只是说你可以使用小于 0 的数字来索引,如果你有一个从数组开头偏移的指针,比如
int a[2] = { 0, 1 }; int b = (&a[1])[-1]; -
Schaubs 评论实际上包含了一个见解,为什么在编程时索引从零开始。这是因为索引在寻址到数组时用作偏移量,因此零偏移量表示数组的开头。