Cprogramming-c-function-call-by-value

提供:Dev Guides
移動先:案内検索

Cの値による関数呼び出し

引数を関数に渡す*値による呼び出し*メソッドは、引数の実際の値を関数の仮パラメーターにコピーします。 この場合、関数内のパラメーターを変更しても、引数には影響しません。

デフォルトでは、Cプログラミングは_call by value_を使用して引数を渡します。 一般に、関数内のコードは、関数の呼び出しに使用される引数を変更できないことを意味します。 次のような関数* swap()*の定義を検討してください。

/*function definition to swap the values*/
void swap(int x, int y) {

   int temp;

   temp = x;/*save the value of x*/
   x = y;   /*put y into x*/
   y = temp;/*put temp into y*/

   return;
}

さて、次の例のように実際の値を渡すことで関数* swap()*を呼び出しましょう-

#include <stdio.h>

/*function declaration*/
void swap(int x, int y);

int main () {

  /*local variable definition*/
   int a = 100;
   int b = 200;

   printf("Before swap, value of a : %d\n", a );
   printf("Before swap, value of b : %d\n", b );

  /*calling a function to swap the values*/
   swap(a, b);

   printf("After swap, value of a : %d\n", a );
   printf("After swap, value of b : %d\n", b );

   return 0;
}

上記のコードを単一のCファイルに入れてコンパイルして実行すると、次の結果が生成されます-

Before swap, value of a :100
Before swap, value of b :200
After swap, value of a :100
After swap, value of b :200

関数内で変更されているにもかかわらず、値に変更がないことを示しています。