10

関数から aを返す必要がある場合struct、通常はstruct代わりにへのポインターを返します。

構造体の配列を返したい場合は、次のことをお勧めします。

  1. 構造体の配列を返す (最初の要素へのポインタ)
  2. または構造体ポインターの配列を返しますか?

以下の 2 つのオプションの図を作成しました。

1:

ここに画像の説明を入力

2:

ここに画像の説明を入力

次の構造体定義が与えられた場合

struct values {
    int a;
    int b;
};

2 つのオプションから構造体のフィールドにアクセスするためのサンプル コードを次に示します。

オプション1:

 struct values *vals = get_values1();
 printf("%d, %d\n", values[0].a, values[1].b);

オプション #2:

 struct values **vals = get_values2();
 printf("%d, %d\n", values[0]->a, values[1]->b);
4

4 に答える 4

0

私にとっては、間接化の数が増えるにつれて、コードの複雑さはさらに速くなります。したがって、私はあなたのオプション #1 を好みます: struct values *foo().

データ要件が #2: に向かって進む場合は、新しい型を作成し、その型へのポインターを返すstruct values **foo()ことを提案します: 。typedef struct values *ValuesSetValuesSet *foo()

于 2013-08-01T13:38:36.927 に答える