MW211 EXIT

devlog
C言語/ポインタのキャスト
2012年10月13日
ポインタをキャストする場合、(括弧の中にあるとはいえ)前方に「*」があるので、
実体値となってしまうような錯覚をするがそれはない。

ポインタ「int* a;」を「b = (unsigned int*)a;」のようにキャストした場合、
「b」にはアドレスが代入される(「*a」ではない)。
つまり「unsigned int* b;」と定義しておかなければならない。
「int c;」に代入したい場合には、「c = *a;」、
「unsigned int d;」に代入したい場合には「d = *((unsigned int*)a);」だ。
┌──────────────────────────────────────┐
│int*           a;                                                           │
│unsigned int*  b = (unsigned int*)a;                                        │
│int            c = *a;                                                      │
│unsigned int   d = *((unsigned int*)a);                                     │
└──────────────────────────────────────┘
分類:C/C++