Cplusplus-cpp-functions

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

C ++関数

関数は、一緒にタスクを実行するステートメントのグループです。 すべてのC ++プログラムには少なくとも1つの関数(* main()*)があり、最も単純なプログラムはすべて追加の関数を定義できます。

コードを別々の機能に分割できます。 コードを異なる関数に分割する方法はユーザー次第ですが、論理的には通常、各関数が特定のタスクを実行するように分割されます。

関数*宣言*は、関数の名前、戻り値の型、およびパラメーターについてコンパイラーに通知します。 関数 definition は、関数の実際の本体を提供します。

C ++標準ライブラリは、プログラムが呼び出すことができる多数の組み込み関数を提供します。 たとえば、2つの文字列を連結する関数* strcat()、1つのメモリ位置を別の位置にコピーする関数 memcpy()*、およびさらに多くの関数。

関数は、メソッド、サブルーチン、またはプロシージャなどのさまざまな名前で知られています。

関数を定義する

C ++関数定義の一般的な形式は次のとおりです-

return_type function_name( parameter list ) {
   body of the function
}

C ++関数定義は、関数ヘッダーと関数本体で構成されます。 ここに関数のすべての部分があります-

  • 戻り値の型-関数は値を返す場合があります。 return_type は、関数が返す値のデータ型です。 一部の関数は、値を返さずに目的の操作を実行します。 この場合、return_typeはキーワード void です。
  • 関数名-これは関数の実際の名前です。 関数名とパラメーターリストは一緒に関数シグネチャを構成します。
  • パラメータ-パラメータはプレースホルダのようなものです。 関数が呼び出されると、パラメーターに値を渡します。 この値は、実パラメーターまたは引数と呼ばれます。 パラメーターリストは、関数のパラメーターのタイプ、順序、および数を参照します。 パラメーターはオプションです。つまり、関数にパラメーターを含めることはできません。
  • 関数本体-関数本体には、関数の動作を定義するステートメントのコレクションが含まれています。

以下は、* max()*という関数のソースコードです。 この関数は2つのパラメータnum1とnum2を取り、両方の最大値を返します-

//function returning the max between two numbers

int max(int num1, int num2) {
  //local variable declaration
   int result;

   if (num1 > num2)
      result = num1;
   else
      result = num2;

   return result;
}

関数宣言

関数*宣言*は、関数名と関数の呼び出し方法をコンパイラーに伝えます。 関数の実際の本体は個別に定義できます。

関数宣言には次の部分があります-

return_type function_name( parameter list );

上記の定義された関数max()の場合、以下は関数宣言です-

int max(int num1, int num2);

パラメータ名は関数宣言では重要ではなく、その型のみが必要なので、次も有効な宣言です-

int max(int, int);

あるソースファイルで関数を定義し、別のファイルでその関数を呼び出す場合、関数宣言が必要です。 そのような場合、関数を呼び出すファイルの先頭で関数を宣言する必要があります。

関数を呼び出す

C ++関数を作成するときに、関数が何をする必要があるかを定義します。 関数を使用するには、その関数を呼び出すか呼び出す必要があります。

プログラムが関数を呼び出すと、プログラム制御は呼び出された関数に転送されます。 呼び出された関数は定義されたタスクを実行し、returnステートメントが実行されるか、関数終了の閉じ中括弧に達すると、プログラム制御をメインプログラムに戻します。

関数を呼び出すには、必要なパラメーターと関数名を渡すだけで済みます。関数が値を返す場合、戻り値を保存できます。 たとえば-

#include <iostream>
using namespace std;

//function declaration
int max(int num1, int num2);

int main () {
  //local variable declaration:
   int a = 100;
   int b = 200;
   int ret;

  //calling a function to get max value.
   ret = max(a, b);
   cout << "Max value is : " << ret << endl;

   return 0;
}

//function returning the max between two numbers
int max(int num1, int num2) {
  //local variable declaration
   int result;

   if (num1 > num2)
      result = num1;
   else
      result = num2;

   return result;
}

main()関数とともにmax()関数を保持し、ソースコードをコンパイルしました。 最終的な実行可能ファイルを実行している間、それは次の結果を生成します-

Max value is : 200

関数の引数

関数が引数を使用する場合、引数の値を受け入れる変数を宣言する必要があります。 これらの変数は、関数の*仮パラメータ*と呼ばれます。

仮パラメータは、関数内の他のローカル変数のように動作し、関数に入ると作成され、終了すると破棄されます。

関数を呼び出している間、引数を関数に渡すことができる2つの方法があります-

Sr.No Call Type & Description
1

Call by Value

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

2

Call by Pointer

このメソッドは、引数のアドレスを仮パラメーターにコピーします。 関数内では、呼び出しで使用される実際の引数にアクセスするためにアドレスが使用されます。 これは、パラメーターに加えられた変更が引数に影響することを意味します。

3

Call by Reference

このメソッドは、引数の参照を仮パラメーターにコピーします。 関数内では、参照は、呼び出しで使用される実際の引数にアクセスするために使用されます。 これは、パラメーターに加えられた変更が引数に影響することを意味します。

デフォルトでは、C ++は*値による呼び出し*を使用して引数を渡します。 一般に、これは、関数内のコードが、同じメソッドを使用するmax()関数の呼び出し中に関数および上記の例を呼び出すために使用される引数を変更できないことを意味します。

パラメータのデフォルト値

関数を定義するときに、最後の各パラメーターのデフォルト値を指定できます。 この値は、関数の呼び出し時に対応する引数が空白のままの場合に使用されます。

これは、代入演算子を使用して、関数定義の引数に値を割り当てることにより行われます。 関数の呼び出し時にそのパラメーターの値が渡されない場合、デフォルトの指定値が使用されますが、値が指定されている場合、このデフォルト値は無視され、代わりに渡された値が使用されます。 次の例を考慮してください-

#include <iostream>
using namespace std;

int sum(int a, int b = 20) {
   int result;
   result = a + b;

   return (result);
}
int main () {
  //local variable declaration:
   int a = 100;
   int b = 200;
   int result;

  //calling a function to add the values.
   result = sum(a, b);
   cout << "Total value is :" << result << endl;

  //calling a function again as follows.
   result = sum(a);
   cout << "Total value is :" << result << endl;

   return 0;
}

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

Total value is :300
Total value is :120