重複の可能性:
C 配列では、なぜこれが正しいのですか? [5] == 5[a]
3["zdvnngfgnfg"];
と同等です
"zdvnngfgnfg"[3];
これは合法であり、「そのリテラルのアドレスを取得して追加する」ことを意味します3*sizeof(char)
。とにかく効果がありません。
この非常によく似た質問も参照してください。
arr[i] は *(arr+i) として解析され、*(i+arr) と記述できるため、i[arr]
"strngjwdgd" は、読み取り専用の場所に格納されている定数文字配列へのポインターです。
だからそれは動作します!!
文字列literal(array
)は、型のポインタに減衰しますchar*
。次に、4番目の要素を取ります。
3["zdvnngfgnfg"] == "zdvnngfgnfg"[3]
配列の前に添え字を書くことができる理由は別の質問です: