授業/C言語基礎/関数
をテンプレートにして作成
開始行:
これまでに、標準で用意されている関数として、printf関数、s...
これらは、それぞれ特定の機能を実行するための処理をまとめ...
*関数の呼び出し [#u320153f]
プログラムの中で関数を使うことを、関数の''呼び出し''とい...
関数を呼び出すときは、必ず、関数の名前の後に括弧 ( ) を付...
( ) の中には、関数に渡す変数を記述します。
関数に渡す変数のことを''引数''といいます。
複数の引数を渡すときは、引数をコンマ , で区切って指定しま...
また、呼び出すと、その結果を返してくれる関数もあります。
返してくれる値のことを''戻り値''といいます。
たとえば、srand関数は、乱数のシードを引数として受け取り、...
#geshi(c){{
srand(1);
}}
rand関数は、引数なしで、int型の値を戻り値として返す関数で...
#geshi(c){{
int r = rand();
}}
普通の関数は引数の数が決まっていますが、printf関数とscanf...
#geshi(c){{
int i = 0;
printf("Hello World!\n");
printf("i = %d\n", i);
}}
ちなみに、printf関数とscanf関数はint型の値を戻り値として...
printf関数は出力した文字数を、scanf関数は代入された値の数...
*関数の定義 [#i5bd75d0]
関数は自分で作ることができます。
関数を作ることを、「関数を''定義''する」といいます。
**引数と戻り値がある関数の定義 [#na622bb2]
関数を定義するには、次のようにします。
#geshi(c){{
戻り値の型 関数の名前(引数1の型 引数1の名前, 引数2の型 引...
処理
return 戻り値;
}
}}
同じ型の引数を複数使うときでも、型を省略できないことに注...
たとえば、二つのint型の値の和を返す関数addを次のように定...
#geshi(c){{
int add(int x1, int x2) {
int y = x1 + x2;
return y;
}
}}
これを呼び出すプログラムは、次のようになります(プログラ...
#geshi(c){{
#include <stdio.h>
int add(int x1, int x2) {
int y = x1 + x2;
return y;
}
int main(void) {
int i = 1, j = 2, k;
k = add(i, j);
printf("%d\n", k);
return 0;
}
}}
このように、引数として渡す変数の名前と引数として受け取る...
**演習1 [#mbf19437]
プログラム1を作成し、実行結果を確認せよ。
**引数がない関数の定義 [#oedbd187]
引数がない関数を定義するときは、''仮引数''として ''void''...
#geshi(c){{
戻り値の型 関数の名前(void) {
処理
return 戻り値;
}
}}
呼び出すときは、引数に何も指定しません。
たとえば、サイコロを振る(引数がない)関数を定義すると、...
#geshi(c){{
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int dice(void) {
int r = rand() % 6 + 1;
return r;
}
int main(void) {
int r;
srand((unsigned int) time(NULL)); // 乱数のシード
r = dice();
printf("%d\n", r);
return 0;
}
}}
**演習2 [#he2b796c]
プログラム2を作成し、実行結果を確認せよ。
**戻り値がない関数の定義 [#ib9cc723]
戻り値がない関数を定義するときは、戻り値の型を ''void'' ...
また、return文には、戻り値を指定しません。
(関数の最後にある戻り値のないreturn文は、省略できます。)
#geshi(c){{
void 関数の名前(引数) {
処理
return;
}
}}
たとえば、指定された回数Hello World!と表示する(戻り値が...
#geshi(c){{
#include <stdio.h>
void hello(int n) {
int i;
for (i = 1; i <= n; i++) {
printf("Hello World!\n");
}
return;
}
int main(void) {
hello(5);
return 0;
}
}}
**演習3 [#hf18b253]
プログラム3を作成し、実行結果を確認せよ。
*特別な関数 main [#o5e6ede1]
実は、これまでのプログラムでも、関数を定義していました。
それが、特別な関数、''main関数''です。
main関数は次のように定義していました。
#geshi(c){{
int main(void) {
処理
return 0;
}
}}
これは、名前がmainで、引数なし、戻り値がint型の関数です。
main関数は、プログラムが実行されたときに、最初に呼び出さ...
プログラムが終了すると、main関数の戻り値がOSへ返されます。
main関数から 0 が返されると、OSはプログラムが正常に終了し...
main関数は、特別に、return文を省略でき、省略すると 0 が返...
また、main関数は、特別に、戻り値の型の宣言を省略できます。
#geshi(c){{
int main(void) {
printf("Hello World!\n");
}
}}
#geshi(c){{
main(void) {
printf("Hello World!\n");
return 0;
}
}}
昔は、main関数の戻り値はありませんでした。
ですから、古い教科書では、main関数の戻り値の型をvoidとし...
今は、main関数の戻り値の型をvoidにすることはできません。
また、main関数には、プログラムを実行するときに指定された...
コマンドライン引数については、もう少し先に進んでから後で...
*関数の中で宣言した変数の有効範囲(おまけ) [#t4ba4657]
関数の中で宣言した変数は、その関数の中だけで有効です。
次のプログラムでは、print1関数とmain関数のそれぞれで変数 ...
#geshi(c){{
#include <stdio.h>
void print1(void) {
int i = 1;
printf("%d\n", i);
}
int main(void) {
int i = 0;
print1();
printf("%d\n", i);
return 0;
}
}}
main関数で宣言された変数 i とprint1関数で宣言された変数 i...
最初にmain関数において変数 i に 0 を代入し、その後、print...
これを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
1
0
}}
**演習4 [#h043e1bd]
プログラム4を作成し、実行結果を確認せよ。
----
*まとめ [#o9611338]
複数の処理をまとめたものを''関数''といい、プログラムの中...
関数を呼び出すときに関数に渡す値を''引数''といい、関数が...
''引数がない関数''も定義できます。
引数がない関数を定義するときは、引数として''仮引数 void''...
''戻り値がない関数''も定義できます。
戻り値がない関数を定義するときは、戻り値の型として ''void...
''関数の中で宣言された変数''は、その関数の中だけで有効で...
他の関数からは見えません。
----
*練習問題 [#u7c26afd]
練習問題は[[こちら>授業/C言語基礎/関数/練習問題]]。
終了行:
これまでに、標準で用意されている関数として、printf関数、s...
これらは、それぞれ特定の機能を実行するための処理をまとめ...
*関数の呼び出し [#u320153f]
プログラムの中で関数を使うことを、関数の''呼び出し''とい...
関数を呼び出すときは、必ず、関数の名前の後に括弧 ( ) を付...
( ) の中には、関数に渡す変数を記述します。
関数に渡す変数のことを''引数''といいます。
複数の引数を渡すときは、引数をコンマ , で区切って指定しま...
また、呼び出すと、その結果を返してくれる関数もあります。
返してくれる値のことを''戻り値''といいます。
たとえば、srand関数は、乱数のシードを引数として受け取り、...
#geshi(c){{
srand(1);
}}
rand関数は、引数なしで、int型の値を戻り値として返す関数で...
#geshi(c){{
int r = rand();
}}
普通の関数は引数の数が決まっていますが、printf関数とscanf...
#geshi(c){{
int i = 0;
printf("Hello World!\n");
printf("i = %d\n", i);
}}
ちなみに、printf関数とscanf関数はint型の値を戻り値として...
printf関数は出力した文字数を、scanf関数は代入された値の数...
*関数の定義 [#i5bd75d0]
関数は自分で作ることができます。
関数を作ることを、「関数を''定義''する」といいます。
**引数と戻り値がある関数の定義 [#na622bb2]
関数を定義するには、次のようにします。
#geshi(c){{
戻り値の型 関数の名前(引数1の型 引数1の名前, 引数2の型 引...
処理
return 戻り値;
}
}}
同じ型の引数を複数使うときでも、型を省略できないことに注...
たとえば、二つのint型の値の和を返す関数addを次のように定...
#geshi(c){{
int add(int x1, int x2) {
int y = x1 + x2;
return y;
}
}}
これを呼び出すプログラムは、次のようになります(プログラ...
#geshi(c){{
#include <stdio.h>
int add(int x1, int x2) {
int y = x1 + x2;
return y;
}
int main(void) {
int i = 1, j = 2, k;
k = add(i, j);
printf("%d\n", k);
return 0;
}
}}
このように、引数として渡す変数の名前と引数として受け取る...
**演習1 [#mbf19437]
プログラム1を作成し、実行結果を確認せよ。
**引数がない関数の定義 [#oedbd187]
引数がない関数を定義するときは、''仮引数''として ''void''...
#geshi(c){{
戻り値の型 関数の名前(void) {
処理
return 戻り値;
}
}}
呼び出すときは、引数に何も指定しません。
たとえば、サイコロを振る(引数がない)関数を定義すると、...
#geshi(c){{
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int dice(void) {
int r = rand() % 6 + 1;
return r;
}
int main(void) {
int r;
srand((unsigned int) time(NULL)); // 乱数のシード
r = dice();
printf("%d\n", r);
return 0;
}
}}
**演習2 [#he2b796c]
プログラム2を作成し、実行結果を確認せよ。
**戻り値がない関数の定義 [#ib9cc723]
戻り値がない関数を定義するときは、戻り値の型を ''void'' ...
また、return文には、戻り値を指定しません。
(関数の最後にある戻り値のないreturn文は、省略できます。)
#geshi(c){{
void 関数の名前(引数) {
処理
return;
}
}}
たとえば、指定された回数Hello World!と表示する(戻り値が...
#geshi(c){{
#include <stdio.h>
void hello(int n) {
int i;
for (i = 1; i <= n; i++) {
printf("Hello World!\n");
}
return;
}
int main(void) {
hello(5);
return 0;
}
}}
**演習3 [#hf18b253]
プログラム3を作成し、実行結果を確認せよ。
*特別な関数 main [#o5e6ede1]
実は、これまでのプログラムでも、関数を定義していました。
それが、特別な関数、''main関数''です。
main関数は次のように定義していました。
#geshi(c){{
int main(void) {
処理
return 0;
}
}}
これは、名前がmainで、引数なし、戻り値がint型の関数です。
main関数は、プログラムが実行されたときに、最初に呼び出さ...
プログラムが終了すると、main関数の戻り値がOSへ返されます。
main関数から 0 が返されると、OSはプログラムが正常に終了し...
main関数は、特別に、return文を省略でき、省略すると 0 が返...
また、main関数は、特別に、戻り値の型の宣言を省略できます。
#geshi(c){{
int main(void) {
printf("Hello World!\n");
}
}}
#geshi(c){{
main(void) {
printf("Hello World!\n");
return 0;
}
}}
昔は、main関数の戻り値はありませんでした。
ですから、古い教科書では、main関数の戻り値の型をvoidとし...
今は、main関数の戻り値の型をvoidにすることはできません。
また、main関数には、プログラムを実行するときに指定された...
コマンドライン引数については、もう少し先に進んでから後で...
*関数の中で宣言した変数の有効範囲(おまけ) [#t4ba4657]
関数の中で宣言した変数は、その関数の中だけで有効です。
次のプログラムでは、print1関数とmain関数のそれぞれで変数 ...
#geshi(c){{
#include <stdio.h>
void print1(void) {
int i = 1;
printf("%d\n", i);
}
int main(void) {
int i = 0;
print1();
printf("%d\n", i);
return 0;
}
}}
main関数で宣言された変数 i とprint1関数で宣言された変数 i...
最初にmain関数において変数 i に 0 を代入し、その後、print...
これを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
1
0
}}
**演習4 [#h043e1bd]
プログラム4を作成し、実行結果を確認せよ。
----
*まとめ [#o9611338]
複数の処理をまとめたものを''関数''といい、プログラムの中...
関数を呼び出すときに関数に渡す値を''引数''といい、関数が...
''引数がない関数''も定義できます。
引数がない関数を定義するときは、引数として''仮引数 void''...
''戻り値がない関数''も定義できます。
戻り値がない関数を定義するときは、戻り値の型として ''void...
''関数の中で宣言された変数''は、その関数の中だけで有効で...
他の関数からは見えません。
----
*練習問題 [#u7c26afd]
練習問題は[[こちら>授業/C言語基礎/関数/練習問題]]。
ページ名: