Cprogramming-c-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プログラミングの関数定義は、_function header_と_function body_で構成されています。 ここに関数のすべての部分があります-

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

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

/*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 <stdio.h>

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

int main () {

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

  /*calling a function to get max value*/
   ret = max(a, b);

   printf( "Max value is : %d\n", ret );

   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 reference

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

デフォルトでは、Cは call by value を使用して引数を渡します。 一般に、関数内のコードは、関数の呼び出しに使用される引数を変更できないことを意味します。