33
可能重複:
In C arrays why is this true? a[5] == 5[a]這爲什麼有效?不合邏輯的數組訪問
我的一個朋友是學習C++的第一次,送我這個片段:
int foo[] = { 3, 38, 38, 0, 19, 21, 3, 11, 19, 42 };
char bar[] = " abcdefghijklmnopqrstuvwxyz-,.!?-_";
for (int i = 0; i < 10; ++i) {
std::cout << foo[i][bar];
}
在一目瞭然,我告訴他它不會工作 - 我認爲它不會編譯,或者至少會導致訪問衝突,因爲foo
不是二維數組,他回答說它是這樣做的。
我爲自己嘗試過,令我驚訝的是,片段運行得非常好。問題是:爲什麼?
根據邏輯,常識和良好的做法,語法應該是bar[foo[i]]
。
我很慚愧地承認我不知道發生了什麼事。在這種情況下,foo[i][bar]
有效的語法是什麼?
這不是一個確切的重複,而且答案很有趣。這兩個問題的根本原因都是一樣的,但對於StackOverflow上的數百個問題,情況確實如此。 – 2012-01-18 13:33:46
順便說一句:我只會同意輸出,如果我會做這些事情... – stefaanv 2012-01-18 16:06:27
有趣的是,這個實際上是有道理的,如果一個人讀取鏈接的問題,但仍然完全不合邏輯,因爲它是當你不'不懂;不合邏輯的部分只是從「這項工作如何」轉變爲「他們爲什麼要讓這項工作」。 – 2016-12-31 18:36:30