よくわからないCコードに出くわしました。以下はコンパイルして正常に実行されます。1)char*をstruct*にキャストできるのはなぜですか?2)void *の代わりにこのイディオムを使用することに利点はありますか?
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;
//文字列部分を削除して編集します。これは、実際には問題のポイントではないためです。