0

複数の入力パラメーター (コードで計算する必要があるものもあります) を持つプロジェクトに取り組んでいるので、それらすべてを構造体に入れます。

typedef struct{
    int N_cell;
    int N_node;
}INPUT;

メイン関数では、宣言します

INPUT in;

その後、in.N_cell と in.N_node の計算に使用される行がいくつかあります。今私は定義します

double *pos_node[in.N_node];
for (i = 0; i < in.N_node; i++)
    pos_node[i] = (double *) calloc(3, sizeof(double));

次に、この配列のポインターを、定義した関数に渡す必要があります

void func(double *pos_node[????]){....}

私の質問は、「????」には何を書くべきかということです。場所?in.Node を使用して、パラメーター リストに "INPUT in" を追加する必要がありますか?

どうもありがとう!

4

2 に答える 2

0

pos_node にもメモリを割り当てる必要があります。

double **pos_node = calloc (in.N_node, sizeof (double *));

(可変長配列は c99 で使用できますが、ほとんどの人はまだ c99 を使いたがりません)

そうすれば、配列を渡す方法が簡単にわかります。C の配列は単なるメモリ ブロックであるため、次のようdouble *array[]に正確に記述することができますdouble **array: double のアドレスを保持するメモリ ブロックのアドレス。

于 2013-03-15T17:32:08.717 に答える
0

ヒープに pos_node を割り当ててみてください:

double **pos_node = calloc(in.N_node, sizeof(double*));
for (i = 0; i < in.N_node; i++)
    pos_node[i] = (double *) calloc(3, sizeof(double));

void func(double **pos_node){....}
于 2013-03-15T17:32:26.907 に答える