4

私は c でポインターを扱っています。次のコードを実行すると、出力として "l" が表示されます。なんで?

char *s = "Hello, World!";
 printf("%c", 2[s]);

2[s] とは何を意味しますか?

4

5 に答える 5

7

2[s]s[2]コンパイラは両方をに変換するため、と同じです*(2 + s)

ここに良いリンクがあります: index[array] と array[index] の両方が C で有効なのはなぜですか?

于 2013-05-22T10:38:55.740 に答える
3

これは、l であるs[2]を出力します。s[i]は構文的に*(s + i)と等しいためです。したがって、 s[2]2[s ] は両方とも*(s + 2)に変換されます。

于 2013-05-22T10:40:43.053 に答える
3

s[2] と 2[s] はどちらも同じです。これが C コンパイラの構築方法です。内部的に s[2] は *(s+2) として扱われます。これは 2[s] に似ています。

于 2013-05-22T10:39:51.100 に答える
2

2[s] は s[2] と同じで、*(s+2) と書くことができます。

于 2013-05-22T10:39:10.187 に答える
0

別の書き方ですがs[2]、意味は同じです。この場合、文字列の 3 番目の文字である「l」が出力されます。

于 2013-05-22T10:39:03.927 に答える