たとえば、Python with。のように、複数の変数を簡単に返すことはできませんreturn (a,b,c)
。ただし、他の「戻り値」に設定されているポインターを渡すか、構造体を使用することができます。
場違いの
関数が実際に個別の値を返し、その引数を変更しないようにする場合、簡単な方法は追加のポインターを渡すことです(構造体を使用することもできます)。たとえば、この関数は、数値のペアの合計と差を計算します。
int add_sub(int a, int b, int* ret2) {
if (ret2) *ret2 = a - b;
return a + b;
}
を使用if (ret1)
すると、ポインタ引数として安全に渡すNULL
ことができるため、その戻り値を無視できます。あなたはこれを次のように使用します:
int add, sub;
add = add_sub(10, 3, &sub);
// add == 13, sub == 7
int just_add;
just_add = add_sub(15, 5, NULL);
// just_add == 20
(この手法では、同じ引数を2回渡すと、混乱を招く可能性があります。たとえばa = add_sub(a, b, &b)
、必要なものが得られない場合などです。)
所定の位置に
関数への引数を変更したい場合は、それらをポインターとして渡すことができます。たとえば、この関数は両方の引数をインクリメントしてから、それらの合計を返します。
int increment_and_sum(int* a, int* b) {
(*a)++;
(*b)++;
return a + b
}
あなたは次のように使用します:
int a = 10, b = 3, sum;
sum = increment_and_sum(&a, &b);
// a == 11, b == 4, sum == 15
(でリテラルを使用できないことに注意してください。つまり、またはを使用increment_and_sum
することはできません。)increment_and_sum(3, 4)
increment_and_sum(&3, &4)