2011-06-03 103 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中,數組是具有連續內存塊的非常簡單的數據結構。因此它們需要是整數,因爲這些索引不過是內存中地址的偏移量。

相關問題