のようにして構造体をつかえばいいのですが、必要になるたびにこれをするのはちょっとめんどくさいですよね。 というわけで色々試行錯誤してみたところ、以下のようにしてunionの配列にするというのがそこそこ便利だったので紹介します。 以下は使用例です。 #include <stdio.h> typedef union { void *p; char *s; int i; char c; } tuple_u; typedef tuple_u tuple[2]; int main(int argc, char *argv[]) { tuple t = { { .s = "hoge" }, { .i = 123 } }; printf("%s, %d\n", t[0].s, t[1].i); return 0; }