自作関数が分からない。
プロトタイプ宣言、引数、戻り値が分からない。
関数を勉強したい。
この記事を読めば、これらの悩みを解決できます。
そもそも「関数」って何?
C言語では「ある値」を入力すると、「何か」を出力するものを関数と呼んでいます。
例えば、「scanf関数」、「printf関数」などがあります。
「scanf関数」を使って文字を入力すると変数に代入することができます。詳しい「scanf」の説明は、下を参考にしてください。
また、「printf関数」のダブルクオーテーション内に文字を入力すれば文字として出力することができます。詳しい「printf関数」の解説は下を参考にしてください。
これらの関数は、入出力関数というもので、関数の一種ですね。
ですが逆に、while、for、if などは、「条件式」というもので関数ではありません。
関数には色々種類がありますが、今回は、「変数」として扱える関数を説明していきます。
自作関数の作り方!
自作関数を作るには
・プロトタイプ宣言
・自作関数
・自作関数の説明
の順に使う必要があります。
自作関数の作り方を「a,b,cの3つのテストの平均点を求める関数」を例に説明していきます。
今までとは違う見た目なので、先にコードを見せます。
#include<stdio.h>
//プロトタイプ宣言
int heikin(int a, int b, int c);
//ここからmain関数
int main()
{
int a, b, c;
a = 8;
b = 7;
c = 9;
printf("平均点=%d",heikin(a,b,c));
}
//ここから自作関数の説明
int heikin(int a,int b,int c)
{
return (a + b + c) / 3;
}
このプログラムを使って、「変数」として扱える関数の説明をしていきます。
プロトタイプ宣言
まず初めに自作関数を使うときは、「プロトタイプ宣言」というものが必要になります。
プロトタイプ宣言は、「これからどのような関数を使うのか」をコンピュータに伝えるためのものです。
必ず、「#include<stdio.h>」の下に書きます。
このとき、カッコの中の変数は、データ型と一緒に書く必要があります。
int heikin(int a, int b, int c);
今回は、「自作関数」を変数として扱うため、「int」というデータ型を使っています。(より本格的な自作関数では「void」を使います。これは次回勉強しましょう。)
自作関数
今回勉強している関数は、変数として扱います。
int main()
{
int a, b, c;
a = 8;
b = 7;
c = 9;
printf("平均点=%d",heikin(a,b,c));
}
このようになりますが、見ての通り今までとほとんどと一緒です。
唯一違うのが、「heikin(a,b,c)」のところですが、これが自作関数です。
関数名(〇,×,▲)
とすることで〇,×,▲の値を、指定した関数に送ることができます。
このような、カッコの中にある「〇,×,▲」のことを引数と呼びます。
自作関数の説明
自作関数の説明は「main関数」の外に書く必要があります。(実際はこの部分を自作関数と呼んだりしますが、このサイトで区別が付けやすいように、「自作関数の説明」と呼んでいます。)
変数として扱う関数は、「main関数」に「戻り値」と言う値を返します。
自作関数の説明は、このように表します。
int heikin(int a,int b,int c)
{
return (a+b+c)/3;
]
1行目は「自分がどの関数であるか」を説明する役割を果たしています。プロトタイプ宣言と同じなので、コピペOKです。
「return」の後ろが、「戻り値」の具体的な数値です。こうすることで、自作関数のheikin(a,b,c)には「8」が代入されます。
このようにして平均点を求める関数を作ることができます。
ここまでをまとめてみます。
#include<stdio.h>
int heikin(int a, int b, int c);
//ここからmain関数
int main()
{
int a, b, c;
a = 8;
b = 7;
c = 9;
printf("平均点=%d",heikin(a,b,c));
}
//ここから自作関数
int heikin(int a,int b,int c)
{
return (a + b + c) / 3;
}
僕は、この自作関数が変数として扱われているので「変数として扱える関数」と呼んでいます。
出力すると平均点は8であることが分かります。
まとめ
「main関数」で変数のように扱える関数を紹介しました。実は、関数は一つだけでなく、いくつも使うことができます。
関数の学習のポイントは、上から順にコードを見て、「main関数」と「自作関数」での変数と値の受け渡しを見抜くことです。この関数での値の受け渡しは、「値渡し」と同じです。値渡しが分からないという人はこちらの投稿を参考にしてください。アドレス渡しの解説もしています。
次は、戻り値がない自作関数を勉強しましょう。より本格的な関数を勉強できます。
コメント