0

これが繰り返しの質問である場合は申し訳ありませんが、私が尋ねようとしている質問を検索するためのキーワードが見つからないようです.

基本的に、私は構造体を定義しました。

#define max_terms 101

typedef struct{
    int row, col, value;
} term;

これで、a[max_terms]、b[max_terms]、c[max_terms] という 3 つの異なる項ができました。次の関数のパラメータに入力して、3 つの定義済み配列のどれを処理するかを選択できるようにします。

void input(/*parameter here*/){
    a[0].row = 0; // want to be able to choose the array to work on instead of just a
}

読んでくれてありがとう!

4

2 に答える 2

3

最も簡単な方法は、配列の最初の要素へのポインターを関数に渡すことです。

void input(term *a)
{
    a[0].row = 0;
}

/* ... */

term b[max_terms];
input(b);

コメントでgiorashc指摘しているように、配列がすべて同じサイズを使用していない場合は、実際のサイズを追加のパラメーターとして渡す必要があります。

于 2012-10-28T09:27:18.803 に答える
1

次の 2 つの一般的なオプションがあります。

void input(term *t, size_t size)

と:

void input(term t[], size_t size)

どちらも同じ意味です。引数を渡すと、両方で同じように機能します。あなたが持っているとき:

term t[SIZE];

次に、それらのいずれかが機能します。

input(&t[0], SIZE);

また:

input(t, SIZE);

明らかに、2 番目の方が便利です。最初のものと同じ意味です。それを書くための短い方法です。配列の最初の要素のアドレスを渡すことは非常に一般的な操作であるため、C ではそれが可能です。

于 2012-10-28T09:31:38.503 に答える