int *pらめぇぇぇぇぇ
http://builder.japan.zdnet.com/sp/c-programming-language/story/0,3800083430,20370255,00.htm
int をポインタにしたらだめにょ
そもそもintってサイズなんだにょ?
CPUやOSにとって都合のよい整数値にょ
だからcpu や os によって変わるにょ
6502,Z80 8bit -128 〜 127
8086,68k 16bit -32768 〜 32767
i386 32bit -2147483648 〜 2147483647
ぽいんたって ++するとそのサイズ分すすむにょ
(8bit環境)
int *p;
p = 40000; // あどれすにょ
アドレス40000には適当データが詰まってると仮定にょ :[ p ] (*p の値は 00000101 b [5]) 40000 :00000101 00000011 00000010 00000001
p++;
++ でintの領域分進むにょ :........ [ p ] (*p の値は 00000011 b [3]) 40000 :00000101 00000011 00000010 00000001
if( *p !=3 ) throw; /* 3 = 00000011b */
/* \e; えんいー */
さて このコード
16bit環境に持っていくと throwにょ
(16bit環境)
int *p;
p = 40000; // あどれすにょ
アドレス40000には適当データが詰まってると仮定にょ :[ p ] (*p の値は 00000101 00000011 b [1283]) 40000 :00000101 00000011 00000010 00000001
p++;
++ でintの領域分進むにょ :........ ........ [ p ] (*p の値は 00000010 00000001 b [513]) 40000 :00000101 00000011 00000010 00000001
if( *p !=3 ) throw; /* 00000011 b [3] */
/* \e; えんいー */
さて このコード
32bit環境に持っていくと throwにょ
さて このコード
64bit環境に持っていくと throwにょ
移植するとかにはすげーめんどーなので
char __int32 __int64 とかつかえたらイイナ!!
まー
サンプルプログラムでしかint *p なんてみないけどね
じっさいは
char *p;
やら
struct HOGE *p;
やら
ほげほげでごにょごにょ