私は一般化されたリンクリストを扱わなければならないので、データフォーマットをvoid *
からint
に変えることはできません。C - アドレス/ポインタ値の代わりに真のint値をvoidポインタに代入する?
極小のバージョン:
int main(int argc, char **argv) {
void *data;
int i = 100;
*((int*)data) = i;
printf("%d", (int)data);
return 0;
}
はアドレスを印刷し保持します。同様に、data = &i
もアドレスを返します。 data = i
の場合はエラーになります。私は可能な限り試してみたところ、i
をdata
に挿入することはできません。
「データ」を参照することはできません。これは初期化されていません。鼻の悪魔は続けるかもしれません... –
GCCの/ Clangの '-Wall'オプションが有用な理由の優れた例:彼らはこれを心からあなたを叩くでしょう。 –