C ++関数
一緒にミッションステートメントを実行するための関数のセットです。 すべてのC ++プログラムは、それがメイン関数main()、すべての単純なプログラムは、他の追加機能を定義することができますされ、少なくとも1つの機能を持っています。
あなたは、異なる機能にコードを置くことができます。 別々の機能にコードを分割する方法を決定するためにあなた次第ですが、論理的に通常分割実施するための特定のタスクに基づいて、各機能を実行します。
関数宣言は、コンパイラの関数名、戻り値の型とパラメータを示します。 関数定義は、関数の実際のボディを提供します。
C ++標準ライブラリは、プログラムの組み込み関数の多くは、呼び出すことができます提供します。 例えば、関数STRCAT()は別の場所にメモリをコピーするために、2つの文字列を接続するための関数のmemcpy()が使用されます。
そのようなので、上の方法、手順やサブルーチンなどとして、多くの関数が呼び出されています。
定義関数
次のようにC ++関数定義の一般的な形式は次のとおりです。
return_type function_name( parameter list ) { body of the function }
C ++では、関数は、関数のヘッダと関数本体のコンポーネントで構成されます。 以下に記載されているすべての機能の一部です:
- 戻り値の型:関数が値を返すことができます。return_typeは、関数によって返される値のデータ型です。 いくつかの関数は、この場合には、戻り値なしreturn_typeキーワードボイドを所望の動作を行います。
- 関数名:これは、関数の実際の名前です。関数名とパラメータリストは、一緒に関数のシグネチャを構成しています。
- パラメータ:パラメータはプレースホルダのようなものです。関数が呼び出されると、あなたはパラメータに値を渡し、この値は実パラメータと呼ばれています。 パラメータリストは、関数のパラメータ、注文数量の種類があります。 パラメータは、それは、関数はパラメータを含めることはできませんと言うことです、任意です。
- 主な機能:関数本体は、ミッションステートメントを定義した関数のセットが含まれています。
例
以下のソースコードのmax()関数です。 この関数は、カウント2つの数の大きい方を返します。これは、2つのパラメータ値num1とnum2のをとります。
// 函数返回两个数中较大的那个数 int max(int num1, int num2) { // 局部变量声明 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; // 函数声明 int max(int num1, int num2); int main () { // 局部变量声明 int a = 100; int b = 200; int ret; // 调用函数来获取最大值 ret = max(a, b); cout << "Max value is : " << ret << endl; return 0; } // 函数返回两个数中较大的那个数 int max(int num1, int num2) { // 局部变量声明 int result; if (num1 > num2) result = num1; else result = num2; return result; }
最大()関数とmain()関数は、ソースコードをコンパイルし、作品を入れています。 あなたが最終的な実行可能ファイルを実行すると、以下の結果が生成されます。
Max value is : 200
関数の引数
あなたが関数のパラメータを使用する場合は、パラメータ値を受け入れるように変数を宣言する必要があります。 これらの変数は、関数の仮引数として知られています。
関数を入力するときに、関数内のローカル変数が作成されたパラメータの他の形態と同様に、機能を終了するが破壊されます。
関数が呼び出されると、関数にパラメータを渡すには、2つの方法があります。
调用类型 | 描述 |
---|---|
传值调用 | 该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数对实际参数没有影响。 |
指针调用 | 该方法把参数的地址复制给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。 |
引用调用 | 该方法把参数的引用复制给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。 |
デフォルトでは、C ++には、パラメータを渡すことによる呼び出しを使用して。 一般的に、これは、関数内のコードは、関数を呼び出すために使用されるパラメータを変更することはできませんことを意味します。 同じ方法を使用するときに前述の例としては、最大()関数を呼び出します。
パラメータのデフォルト値
あなたは関数を定義するときは、背後にあるパラメータ・リスト中の各パラメータのデフォルト値を指定することができます。 関数が呼び出されると、実際のパラメータの値が空白になっている場合は、デフォルト値を使用します。
これは、パラメータとして関数定義を割り当てる代入演算子を使用して行われます。 関数が呼び出されると、パラメータの値が渡されない場合は、その値が指定されている場合、デフォルト値は、渡された値を使用して、無視されるデフォルト値を使用します。 次の例を考えてみます。
#include <iostream> using namespace std; int sum(int a, int b=20) { int result; result = a + b; return (result); } int main () { // 局部变量声明 int a = 100; int b = 200; int result; // 调用函数来添加值 result = sum(a, b); cout << "Total value is :" << result << endl; // 再次调用函数 result = sum(a); cout << "Total value is :" << result << endl; return 0; }
上記のコードはコンパイルされ、実行されると、次の結果を生成します。
Total value is :300 Total value is :120