0

ポインターをパラメーターとして使用し、ポインターの 1 つを返す関数を実行したいのですが、可能ですか?

例:

int* sum(int* x, int* y, int* total){
    total=x+y;
    return total;
}

次のエラーが表示されます。

main.cpp:10:13: error: invalid operands of types 'int*' and 'int*' to binary 'operator+'

参照ではなくポインターのみを使用してそれを行うにはどうすればよいですか?

4

2 に答える 2

3

ポインターが指すオブジェクトへの参照を返すには、ポインターを逆参照する必要があります。

*total = *x + *y;

ただし、C++ では、参照を使用してこれを容易にすることができます。

int sum(int x, int y, int& total)
{
    total = x + y;
    return total;
}

total変更する必要がある唯一の引数であるため、参照は with でのみ宣言されます。これを呼び出す方法の例を次に示します。

int a = 5, b = 5;
int total;

sum(a, b, total);

考えてみれば、参照を使って値を変更しているので、実際に戻る必要はありません。return ステートメントを取り出し、戻り値の型を次のように変更しvoidます。

void sum(int x, int y, int& total)
{
    total = x + y;
}

または、逆に参照を使用せずに加算を返すこともできます。

int sum(int x, int y)
{
    return x + y;
}
于 2013-09-05T16:43:07.800 に答える
1

これが機能したと仮定します(当然のことながら、コンパイルされません):

 total=x+y;

xのアドレス+ のアドレスを指すポインターが得られますy。これは [ほぼ] 常に無意味であるため、コンパイラは 2 つのポインターを一緒に追加することを許可しません。

本当に必要なのは、その値int *xint *yPOINTS AT を追加し、それを次の場所に格納することですtotal

*total = *x + *y; 
于 2013-09-05T16:38:34.303 に答える