C+|C++入門チュートリアル(六)関数
2569 ワード
6関数
6.1概要
役割:よく使うコードをカプセル化し、リセットするコードを減らす
大きなプログラムは、一般的に多くのブロックに分けることができ、各モジュールは関数機能としてカプセル化することができます.
6.2関数の定義
関数の定義:戻り値タイプ 関数名 パラメータリスト 関数体 return式 6.3関数の呼び出し
構文:
パラメータを呼び出すときに入力されるパラメータは実際のパラメータであり,実パラメータと略称する.
関数を呼び出すと,実パラメータの値がパラメータに伝達され,この値伝達も伝達値となる.
6.4値転送
関数呼び出し時に、実パラメータの値が関数のパラメータに渡されます.このプロセスは値伝達と呼ばれ、伝達値とも呼ばれます.
したがって,値伝達時にパラメータが変化すると,実パラメータ自体の値には影響しない.実パラメータの値は、アドレスまたはリファレンスのみが変更できます.
6.5関数の宣言
≪アクション|Actions|emdw≫:コンパイラの関数名と関数の呼び出し方法を示します.関数の実際のマスターは後で個別に定義できます.
関数は何度も宣言できますが、一度だけ定義できます.
関数宣言自体が開発者にとっての意味は、このプログラムの一部の関数がどのように実行されているかを事前に知ることができ、メイン関数を直接見ることができます.コンパイラにとって、実際には関数の定義を宣言の場所に直接書くことに相当します.コンパイラは関数宣言を発見すると、対応する関数定義を直接探し、関数をコンパイルします.
しかし、関数宣言には利点があります.関数が別の関数を呼び出す必要がある場合、関数の定義には前後があります.呼び出された関数を定義してから、呼び出された関数を定義する必要があります.しかし、ファイルヘッダで一緒に宣言すれば、この問題はありません.また、宣言は順序に注意する必要はありません.
6.6関数のファイル作成
機能:関数構造をより明確にする
手順:は、接尾辞名を作成する.hのヘッダファイル は、接尾辞名を作成する.cppのソースファイル ヘッダファイルに関数の宣言を書く ソースファイルに関数を書く定義 2つの数の関数を簡単に交換して、関数を単独でプログラムに入れます.
先書き関数自体のソースファイル
それからこの関数の宣言を書いて、頭のファイルの中に置きます
このうち
pragmaはコンパイルノートで、このヘッダファイルは一度しかコンパイルできないことを示しています.コンパイル中にファイルを開くのは一度だけです.
拡張:
方法一:
メソッド2では、ファイル名を重視します.ファイルが同じであれば、何度コピーしても一度だけコンパイルされます.しかし、複数のヘッダファイルが1つの名前であれば、残りのいくつかがコンパイルされない可能性もあります.
最後に、主関数を作成します.
注意:自分で作成したヘッダファイルには二重引用符""が含まれており、システムが提供するヘッダファイルにはカッコ<>が使用されます.
6.1概要
役割:よく使うコードをカプセル化し、リセットするコードを減らす
大きなプログラムは、一般的に多くのブロックに分けることができ、各モジュールは関数機能としてカプセル化することができます.
6.2関数の定義
関数の定義:
構文:
functionName( peremeterList )
関数のパラメータは、形式パラメータとなり、略称は形パラメータとなります.パラメータを呼び出すときに入力されるパラメータは実際のパラメータであり,実パラメータと略称する.
関数を呼び出すと,実パラメータの値がパラメータに伝達され,この値伝達も伝達値となる.
6.4値転送
関数呼び出し時に、実パラメータの値が関数のパラメータに渡されます.このプロセスは値伝達と呼ばれ、伝達値とも呼ばれます.
したがって,値伝達時にパラメータが変化すると,実パラメータ自体の値には影響しない.実パラメータの値は、アドレスまたはリファレンスのみが変更できます.
6.5関数の宣言
≪アクション|Actions|emdw≫:コンパイラの関数名と関数の呼び出し方法を示します.関数の実際のマスターは後で個別に定義できます.
関数は何度も宣言できますが、一度だけ定義できます.
関数宣言自体が開発者にとっての意味は、このプログラムの一部の関数がどのように実行されているかを事前に知ることができ、メイン関数を直接見ることができます.コンパイラにとって、実際には関数の定義を宣言の場所に直接書くことに相当します.コンパイラは関数宣言を発見すると、対応する関数定義を直接探し、関数をコンパイルします.
しかし、関数宣言には利点があります.関数が別の関数を呼び出す必要がある場合、関数の定義には前後があります.呼び出された関数を定義してから、呼び出された関数を定義する必要があります.しかし、ファイルヘッダで一緒に宣言すれば、この問題はありません.また、宣言は順序に注意する必要はありません.
6.6関数のファイル作成
機能:関数構造をより明確にする
手順:
先書き関数自体のソースファイル
//swap.cpp
#include"swap.h"
void swap(int& a, int& b) {
int space;
space = a;
a = b;
b = space;
}
それからこの関数の宣言を書いて、頭のファイルの中に置きます
#pragma once
void swap(int&, int&);
このうち
#pragma once
の役割と次のコードの差は多くありません.#ifndef A_H
#define A_H
……
#endif
pragmaはコンパイルノートで、このヘッダファイルは一度しかコンパイルできないことを示しています.コンパイル中にファイルを開くのは一度だけです.
拡張:
方法一:
pragma once
方法2:ifndef A_H
この2つの方法には大きな違いはありません.詳細には、メソッド2の移植性が高く、一部のコンパイラはメソッド1をサポートしていない.一方、方法の1つは、物理的なレベルで1つのファイルが2回コンパイルされないことです.しかし、1つのファイルに複数のコピーがある場合は、すべて開きます.メソッド2では、ファイル名を重視します.ファイルが同じであれば、何度コピーしても一度だけコンパイルされます.しかし、複数のヘッダファイルが1つの名前であれば、残りのいくつかがコンパイルされない可能性もあります.
最後に、主関数を作成します.
//main.cpp
#include
#include"swap.h"
using namespace std;
int main() {
int a = 10, b = 20;
cout << " :" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
swap(a, b);
cout << " :" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
}
注意:自分で作成したヘッダファイルには二重引用符""が含まれており、システムが提供するヘッダファイルにはカッコ<>が使用されます.