4

C では、数値の配列を静的に事前に割り当てる必要があり、それぞれが異なる文字列の配列に関連付けられています。次のようなコードはトリックを行います:

struct number_and_strings {
  int  nnn;
  char **sss;
}

static struct number_and_strings my_list[] = {
  {12, {"apple","banana","peach","apricot","orange",NULL}},
  {34, {"tomato","cucumber",NULL}},
  {5,  {"bread","butter","cheese",NULL}},
  {79, {"water",NULL}}
}
4

1 に答える 1

5

sssポインタへのポインタです。したがって、ポインターの配列を直接割り当てることはできません。複合リテラル (C99 の機能) を使用して、次のように割り当てることができます。

static struct number_and_strings my_list[] = {
      {12, (char*[]){"apple","banana","peach","apricot","orange",NULL}},
      {34, (char*[]){"tomato","cucumber",NULL}},
      {5,  (char*[]){"bread","butter","cheese",NULL}},
      {79, (char*[]){"water",NULL}}
    };
于 2013-04-13T16:19:40.667 に答える