C void ポインターに関する私の知識では、適切なデータ型に自動的に変換されます。以下は、警告を見つけたプログラムです。
互換性のないポインター型からの初期化 [デフォルトで有効]
#define ROW 3
#define COL 2
int main()
{
void **ptr = malloc( ROW*COL* sizeof(int) );
int (*p)[COL] = ptr;
int i, j;
for( i = 0; i < ROW; ++i )
for( j = 0; j < COL; ++j )
scanf("%d", &p[i][j]);
for( i = 0; i < ROW; ++i )
{
for( j = 0; j < COL; ++j )
printf("%d ", p[i][j]);
printf("\n");
}
free(ptr);
return 0;
}
しかし、それは完全に機能しました。void**
ポインターが「COLサイズの整数配列へのポインター」にキャストされた型である場合、その動作は変更され、2D配列のように動作する必要がありますか?