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