字符串作为数组索引

时间:2011-06-03 15:44:08

标签: c arrays

3["XoePhoenix"]中,数组索引是字符数组的类型。我们可以在C中这样做吗?数组索引必须是整数吗?

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

3 个答案:

答案 0 :(得分:5)

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

一般来说,a[i]i[a]是等效的。

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

答案 1 :(得分:5)

3["XoePhoenix"]"XoePhoenix"[3]相同,因此会评估为'P'

C中的数组语法只是写*( x + y )的另一种方式,其中xy是括号前后的子表达式。由于加法的可交换性,这些子表达式可以在不改变表达式含义的情况下进行交换。

因此3["XeoPhoenix"]编译为*( 3 + "XeoPhoenix" ),其中字符串衰减为指针,3被添加到此指针,这反过来导致指向字符串中第4个字符的指针。 *取消引用此指针,因此此表达式的计算结果为'P'

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

答案 2 :(得分:0)

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