私はかなり理解していないCコードを見つけました。以下はコンパイルして動作します。 1)なぜstruct *にchar *をキャストできますか?2)void *の代わりにこのイディオムを使用する利点はありますか?char * ptr to struct
struct foo
{
int a;
int b;
char *nextPtr;
};
. . .
// This seems wrong
char *charPtr = NULL;
// Why not
//void *structPtr = NULL;
struct foo *fooPtr;
fooPtr = (struct foo*)charPtr;
//実際に問題のポイントではないので、文字列部分を削除して編集します。
「文字列」とは何ですか?これはCかC++ですか? – dirkgently
Cスタイルのキャスト構文を使って何かにキャストすることができます。コンパイラはあなたを信頼します。代わりに 'char *'が使われた 'void *'が発明されるまでに時間がありましたが、その時はすでに経過しています。 – Flexo
申し訳ありませんが、もしそれが適切です。 – LeviX