typedef struct list {
int num;
int data[1];
} LIST;

LIST *p = (LIST*)data; /* 読み込んできたデータなど */

for( i=0; i<p->num; i++ )
printf("%d,",p->data[i]);


みたいに配列を故意にオーバーさせて使うのは一般的?