String as an array index

前端 未结 3 1345
刺人心
刺人心 2021-01-19 04:35

In 3[\"XoePhoenix\"], array index is of type array of characters. Can we do this in C? Isn\'t it true that an array index must be an integer?

What does

3条回答
  •  生来不讨喜
    2021-01-19 05:03

    3["XoePhoenix"] is the same as "XoePhoenix"[3], so it will evaluate to the char 'P'.

    The array syntax in C is not more than a different way of writing *( x + y ), where x and y are the sub expressions before and inside the brackets. Due to the commutativity of the addition these sub expressions can be exchanged without changing the meaning of the expression.

    So 3["XeoPhoenix"] is compiled as *( 3 + "XeoPhoenix" ) where the string decays to a pointer and 3 is added to this pointer which in turn results in a pointer to the 4th char in the string. The * dereferences this pointer and so this expression evaluates to 'P'.

    "XeoPhoenix"[ 3 ] would be compiled as *( "XeoPhoenix" + 3 ) and you can see that would lead to the same result.

提交回复
热议问题