C++の学習ノート(第五章:関数)

2814 ワード

目次
関数の概要
関数の定義
関数の呼び出し
プログラムの実行に関する2つの基本方針の1つ(可視性,役割ドメイン,存在時間)の理解.【友情提示、もう一つはハードウェア側の処理過程、例えば変数の格納タイプ、関数呼び出しのメカニズムパラメータ伝達のメカニズム・・・】
構造化プログラム設計の理念をさらに解釈する
いくつかの種類は特殊ですが、よく使われる関数の整理:再帰関数、インライン関数、リロード関数、デフォルト値付き関数、
本文:
関数の概要:関数は、一定の機能を有し、よく使用される独立したコードセグメントです.
関数はインタフェースと関数体から構成され、関数のインタフェースは関数名と関数タイプ、および形式パラメータテーブルを含む.関数体はアルゴリズムを実装するために使用されます.
関数はカスタム関数とライブラリ関数に分けられます(標準のライブラリファイルを追加する必要があります.ところで、using namespace stdとライブラリファイルの違いは、前者はキーワードの定義を含み、後者はライブラリ関数の定義を含む).
≪関数の定義|Function Definitions|oraolap≫:定義された関数が戻りタイプと一致しない場合、自動的に変換されます.
返されるタイプが説明されていない場合は、int型として自動的に定義されます.
関数プロトタイプ
return文
関数の呼び出し:1.呼び出す方法は、関数の文(戻り値があってもいい)、関数の式(値を返さなければならない)、関数のパラメータ(max(a,b,max(c,d,e))の3種類あります.
関数実行の方針の1つ:A:役割ドメイン:ブロック役割ドメイン:識別子定義から役割を果たす領域
関数のスコープ
クラスの役割ドメイン
可視性:内層が外層より大きい:::(役割ドメイン演算子は一度使えばいいので、使わないほうがいい.このようなものは、使うと面倒を起こす)
生存周期:自分が変数の格納位置から見る.生存期間によって変数を2つの静的変数と動的変数に分けることができる.
C++で使用する変数の格納タイプはauto,register,extern,statacの4種類あります.
ここでauto変数はスタック領域に格納され、一般的にaitoを省略することができる.register変数はcpuのレジスタに格納されます.メモリに格納するのではなく、レジスタというものは限られており、範囲を超えると自動的にauto変数に変換されます.extern変数あるファイルに変数が定義されている場合、他のファイルで使用する場合はexternを付けて説明する必要があります.最後にstatic,加算すると,この変数は静的変数である.静的変数はまたグローバルまたはローカル変数に分けられ、ローカルの静的変数が最初に初期化されなければ、自動的に0に割り当てられ、ローカルの静的変数が呼び出されるたびに、前回の値を呼び出すことができます.静的グローバル変数の利点は、他のファイルに呼び出されてはいけないセキュリティが高いことですが、これもその劣勢であり、他のファイルと共有できません.
{
補足:グローバル変数とローカル変数:格納されたいくつかの領域:コード領域;データ領域:スタック領域(プログラムで実行を申請する領域)、スタック領域(ローカルの変数を格納し、先に入ってから出る)、グローバルおよび静的変数領域(変数がグローバルまたは静的変数と命名されると、この領域に格納され、このプログラムが実行されるまで保持されます)、定数領域(文字変数が格納される場所).           
}
B:関数呼び出しの実行メカニズム:
機構化設計の理念、
いくつかの特殊な関数:再帰関数、この関数は関数自身を呼び出すことができて、更に再帰問題の処理を実現します.
インライン関数、この関数は最初から実行されます.前にinlineを追加すればいいです.(インライン関数の内部にループ文とswitch文を含めることはできません.また、インライン関数の定義は呼び出しの前に置く必要があります)メリットは、適切に利用すれば、時間と空間のオーバーヘッドを節約できることです.
リロードされた関数:使いやすいように、いくつかの関数名の同じ関数を命名することができます.彼らの形式パラメータは異なり、名前が同じだけで一緒に置くことができます.そうすれば、コンパイラに見てもらい、自動的に選択することができます.注意すべき3点は、リロード関数は形式パラメータのみで異なる関数を区別し、パラメータ名や関数のタイプで区別するのではなく、異なる機能の関数を一緒に書くことができず、読解性を破ることです.
≪デフォルト値付き関数|Function with Defaults|oem_src≫:パラメータが指定されていない場合、自動的に関数のデフォルト値として入力されます.いくつかの点に注意してください.デフォルト値は、デフォルト値以外のパラメータの前に置く必要があります.
応用:1、いくつかの比較経典の値とアドレスの伝達を総括します
値の転送アドレス転送:A:配列を転送します.B:アドレスを渡す(アドレスを取る)C:ポインタを渡す.
2、いくつかの古典的な操作
cin>>a(char型の配列名);
ofstream ofile(配列名を書く/アドレスを書くことができます)
パラメータは配列を定義し、実パラメータは配列名を書く必要があります.
          3.さいきかんすう
インライン関数のいくつかの記述の要点:第一に、インライン関数は内部からインライン関数の関数名を呼び出す必要がある.第二に、収束関数には判断の終了条件が必要であり、終了後の戻り値も必要である.
           4.せいてきへんすう
静的変数のポイントは、繰り返し参照でき、値が格納されることです.プログラムを書くときは、まず、再定義された後、元の値が存在しないことを恐れないでください.第二に、主関数の中の条件の判断を柔軟に設計する必要があります.
static int bcd=0;
	bcd = a+bcd;
	return bcd;
            5.defineの後ろに追加する必要はありません.