正しく逆参照し、整数を正しく使用すると仮定すると、これは良いプログラミング方法ですか?
union {
int x;
struct node * next;
};
ユニオンはかなり低レベルの言語機能です。どのタイプが共用体に一緒に存在できるかに関して、制限的な「優れたプログラミング プラクティス」が存在する意味のある理由はありません。ユニオンの目的は、メモリ使用量を「多重化」することです。同じメモリ領域に重複しない寿命を持ついくつかの無関係なオブジェクトを格納することにより、スペースを節約します。
それが必要な場合は、それを選択してください。
共用体は、生のメモリの再解釈 (AKA 型パニング) に使用されることがあります。この共用体の使用は、C99 標準への最近の技術的正誤表の 1 つで正式に合法化されるまで、違法でした。用途はありますが、型パニングは確かに疑わしいプログラミング手法と見なすことができます。
有効?はい。
良いアイデア?おそらくそうではありません。ポインターは 64 ビットでさえないsizeof(int)
ため、あまり役に立たない結果になります。