これわかったら楽しくなってくると思う
これわかったら楽しくなってくると思う
#include "stdio.h"main(){//配列はポインタなんだよというデモ//配列でメモリを異常に弄って4バイトのintの中身をcharを使って1バイトずつ書き換えます。unsigned int i[2]={0}; //符号なしintunsigned 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] = 134810123printf("%x %x\n",i[0], i[1]);}