これわかったら楽しくなってくると思う
これわかったら楽しくなってくると思う
#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]);
}