■C++を学ぼう!
「C++を学ぼう!」では、C++の初心者をターゲットにC++言語を体系的に学べるようにサイトを構築しています。
管理人もC++を学びながら作っていますので、分かり難い点などあればご指摘下さい。

▼スポンサードリンク
■メニュー

(C)あいねこの館

文章などの改変・利用は禁止します
関数

関数の定義
関数の定義は以下の通りです。
型 関数名(引数){ プログラム; return; }
return では関数の呼び出し元に指定した値を返します。
int型の関数ではintの値を返します。
void型の関数では値は返しません。
(引数)は特に引数の値がなくても問題ありません。

引数とは値を関数に渡すことをいいます。

関数はmain関数から実行され、他の関数が定義されていてもmain関数から実行されます。
では関数を実際に使ってみましょう。

#include <iostream>

using namespace std;

//main以降にある為、関数を宣言する
int kaizyo(int x);

//メイン関数
int main(){

	//関数kaizyoを呼び出す
	int x = kaizyo(4);

	cout << x << endl;

}

//int関数kaizyo
int kaizyo(int x){

	int sum = 1;

	//階乗を計算する
	for(int a=1;a<=x;a++){

		sum = sum * a;
	}

	//階乗の結果を返す
	return sum;

}
実行結果は以下の通りです。
24
関数を宣言するときには、main関数より後に関数を記載するときは、最初に関数の宣言をしなければなりません。

このように関数を用いると、同じような処理をしたい時に関数を呼び出すだけでかまいません。例えば、階乗プログラムを 値ごとに階乗プログラムを書いていると非常に非効率です。このように関数はひとくくりに纏めることが出来るので便利です。

static変数
static変数では、関数が呼び出される度に、呼び出し元の関数の変数が保持されます。通常は関数の呼び出しが終了されると 変数は全て初期化されます。
#include <iostream>

using namespace std;

//main以降にある為、関数を宣言する
void test(){

	static int a;
	a++;
	cout << a << endl;


}

//メイン関数
int main(){

	//関数testを呼び出す
	test();
	test();
	test();
	test();

}

//int関数kaizyo
int kaizyo(int x){

	int sum = 1;

	//階乗を計算する
	for(int a=1;a<=x;a++){

		sum = sum * a;
	}

	//階乗の結果を返す
	return sum;

}
実行結果は以下の通りです。
1
2
3
4
デフォルト引数
関数に毎回同じ値を設定することが面倒な場合、毎回一定の値を設定することが出来ます。
#include <iostream>

using namespace std;

//void関数test
void test(int x,int y = 1,int z = 2){

	cout << x << y << z << endl;
}

//メイン関数
int main(){

	//関数testを呼び出す
	test(9);

}
実行結果は以下の通りです。
912
デフォルト引数で注意しないといけないのは、デフォルト引数は最後に記載する必要があります。 引数として入力したい引数は前に宣言しなければなりません!

関数の多重定義
c++では型が異なると関数に同じ名前を付けられる。例えば、int型の関数とfloat型の関数といったように関数名を定義することが出来ます。
#include <iostream>

using namespace std;

//int関数test
int test(int x){

	cout << "int型関数が呼び出されました。" << endl;
	cout << x << endl;
	return x;
}

//float関数test
float test(float x){

	cout << "float型関数が呼び出されました。" << endl;
	cout << x << endl;
	return x;
}

//メイン関数
int main(){

	//関数testを呼び出す
	test(9);

	test(9.4f);

}
実行結果は以下の通りです。
int型関数が呼び出されました。
9
float型関数が呼び出されました。
9.4
ここで注意すべき点は、float型の関数を呼び出す場合には、fを付けて明示的にfloat型を示さなければエラーとなります。