文字字符串索引标准C?

时间:2012-07-16 11:24:18

标签: c string indexing

我偶然发现了包含以下内容的代码:

char c = "abc"[1];

它用gcc编译并运行良好!在此表达之后c将为'b'

这个标准是索引文字字符串还是运气好吗?

3 个答案:

答案 0 :(得分:6)

当然是,字符串文字是数组类型。它被转换为表达式中char的指针,就像任何指向char的指针。

char c = "abc"[1];

char *p = "abc";
char c = p[1];

是等价的。

答案 1 :(得分:3)

这完全是标准的。字符串实际上是指向字符数组的指针的一段语法糖,任何指针都可以使用下标表示法。

事实上,a[b]相当于*(a + b),而*(b + a)相当于a[b],这会导致b[a]等同于{char c = 1["abc"]; 的轻微惊人结果1}},这就是为什么在某些代码中(特别是,但不幸的是,在混淆的代码竞争中),这类事情:

{{1}}

可能会发生。

答案 2 :(得分:0)

这是标准的,因为由“”定义的字符串转换为可以索引的char *(char指针)。该指针的目标始终为1个字符,在您的情况下为b。