C の超カンタンなことなら漏れに聞け
レス数が950を超えています。1000を超えると書き込みができなくなります。
0964960
NGNGうぅ、、、、、これは俺が試されているんだろう。
ここでしくじったら、二度と質問に答えてもらえないかも
#プレッシャー!!!
ということで、猿なので一度にはわかりませんので
順を追って考えさしてください。
char c; 値(1バイト)が格納される
int i; 値(4バイト)が格納される
char *cp= &c; 変数cの値が格納されているアドレスを*cpに代入 //かなり理解があやしいぃ。。。
で、
*cp = i; 4バイト分の値(i)を、変数cpが示す先のアドレスへ入れる。
変数cpは&cが代入されているから、1バイト分のアドレス領域
>>メモリ破壊
*(int *)cp = i; アドレスcpが指し示す先には4バイト分のデータ領域があるとコンパイラに、
無理矢理信じ込ませる。→cpをint *でキャストしているので
で、そのアドレスが指し示す先に4バイト分の値(i)を代入
でも実際は1バイト分(&c)しかない。
>>メモリ破壊
下側は何となくこれで良いような気がしますです。
上は・・・・・????
くぅ、こんなにメモリの事を考えてコード読んだのはじめてっす。
この1文書くのに1時間かかりました。
必死に考えました、マジで悔しいっす。
お願いみしゅてないでぇ〜〜〜〜(T_T)
レス数が950を超えています。1000を超えると書き込みができなくなります。