2011-06-03 102 views
3

3["XoePhoenix"]中,数组索引是字符数组的类型。我们可以用C做这个吗?数组索引是不是一个整数?作为数组索引的字符串

3["XeoPhoenix"]是什么意思?

+0

另请参阅:http://stackoverflow.com/questions/381542 – x4u 2011-06-04 09:08:59

回答

5

3["XoePhoenix"]相同"XoePhoenix"[3],所以它会评估为char 'P'

在C中的数组语法不大于写入*(x + y),其中xy之前和括号内是子表达式的不同的方式更。由于添加的交换性,这些子表达式可以在不改变表达式的含义的情况下进行交换。

所以3["XeoPhoenix"]是哪里串衰减到指针和3添加到该指针编译为*(3 + "XeoPhoenix")这在一个指向字符串中的字符第四转的结果。 *取消引用此指针,因此此表达式的计算结果为'P'

"XeoPhoenix"[ 3 ]将被编译为*("XeoPhoenix" + 3)并且您可以看到会导致相同的结果。

+0

很好解释。谢谢 – Michael 2011-06-03 15:59:52

5

3["XeoPhoenix"]相当于"XeoPhoenix"[3]并且将评估为第4个字符,即'P'

通常a[i]i[a]是等同的。

a[i] = *(a + i) = *(i + a) = i[a] 
+2

奇怪的功能,它使它在列表顶部:http://stackoverflow.com/questions/1995113/strangest-language-feature/1995156 #1995156 – codaddict 2011-06-03 15:47:46

0

在C中,数组是具有连续内存块的非常简单的数据结构。因此它们需要是整数,因为这些索引不过是内存中地址的偏移量。

相关问题