私は c でポインターを扱っています。次のコードを実行すると、出力として "l" が表示されます。なんで?
char *s = "Hello, World!";
printf("%c", 2[s]);
2[s] とは何を意味しますか?
2[s]
s[2]
コンパイラは両方をに変換するため、と同じです*(2 + s)
ここに良いリンクがあります: index[array] と array[index] の両方が C で有効なのはなぜですか?
これは、l であるs[2]を出力します。s[i]は構文的に*(s + i)と等しいためです。したがって、 s[2]と2[s ] は両方とも*(s + 2)に変換されます。
s[2] と 2[s] はどちらも同じです。これが C コンパイラの構築方法です。内部的に s[2] は *(s+2) として扱われます。これは 2[s] に似ています。
2[s] は s[2] と同じで、*(s+2) と書くことができます。
別の書き方ですがs[2]
、意味は同じです。この場合、文字列の 3 番目の文字である「l」が出力されます。