これわかったら楽しくなってくると思う
これわかったら楽しくなってくると思う
#include "stdio.h" main(){ //配列はポインタなんだよというデモ //配列でメモリを異常に弄って4バイトのintの中身をcharを使って1バイトずつ書き換えます。 unsigned int i[2]={0}; //符号なしint unsigned char go_i[1]; //i[0] go_i[1] = 15; //i[0] go_i[2] = 14; //i[0.25]←実際にはできない表現 go_i[3] = 13; //i[0.5] go_i[4] = 12; //i[0.75] //i[1] go_i[5] = 11; //i[1] go_i[6] = 10; //i[1.25] go_i[7] = 9; //i[1.50] go_i[8] = 8; //i[1.75] printf("%x %x\n",i[0], i[1]); //16進数で表示 i[0] = 0;i[1] = 0; //同じ事をポインタでやる //////////////////////////// char *i_head = (char *)&i; //そのままでもiのアドレスをcharのポインタに入れられるが //こうすると分かっててやってることが明示できるのでwarningが出なくなる。 //i[0] *(i_head) = 15; *(i_head+1) = 14; *(i_head+2) = 13; *(i_head+3) = 12; //i[1] *(i_head+4) = 11; *(i_head+5) = 10; *(i_head+6) = 9; *(i_head+7) = 8; printf("%x %x\n",i[0], i[1]); i[0] = 0;i[1] = 0; //もちろんint型のポインタを使えば普通の配列のように使える ///////////////////////////////////////////////// int *i_p = (unsigned int *)&i; *i_p = 0xc0d0e0f; //16進数の代入 i[0] = 202182159 と等価 *(i_p+1) = 0x8090a0b; //i[1] = 134810123 printf("%x %x\n",i[0], i[1]); }