水瓶座列車

どこまで行けるか、とりあえず発車します。

C言語の関数定義と作成、コール(呼び出し)手順について解説

f:id:aquarius999:20210506221331p:plain

 

C言語のプログラムは、main()関数から様々な関数をコールして、更にその関数から別の関数をコールしたりと、処理が徐々に広がっていきます。 

関数を使用する時は、「関数をコールする」や「関数を呼び出す」といった感じで会話では使用します。

C言語に限らずほとんどのプログラム言語は、関数の集まりでできていますので、必ず理解しておく必要があります。

それでは、C言語の関数宣言と作成、使用手順について解説していきます。 

 

 

 

 

 

1.関数とは

 

関数とは、よく使用される処理をまとめたり、ある一連の処理をまとめたりして、

プログラムを読みやすくし解析しやすくするために、処理をまとめたプログラムのことを言います。

関数を作る場合には、その関数処理について使用用途が明確になるように設計します。

 

 

2.関数の定義

 

関数の定義は、以下のように行います。

戻り値の型 関数名( 引数の宣言 )
{
  処理内容
}

 

戻り値とは、その関数処理の結果を受け取るためのもので、返したい値の型を定義します。

関数名は、他で使用されている関数名以外ならどのような名前でも構いませんが、関数処理にあっている名前にします。

引数とは、その関数に渡したい値の型と変数名を定義します。 例えば、こんな感じです。

int tashizan( int a, int b )
{ 
  return a+b;
}

 

引数の数には、制限がありませんが、関数を使いやすくするために少ない方が良いです。

ただ、設計上においてどうしても引数が多くなったとしても、プログラム効率が良く、

プログラムが見やすくなるのであれば、特に問題ありません。

 

 

3.関数宣言と関数コール(呼び出し)手順

 

例として、以下が関数宣言と関数コールをしているプログラムです。

#include <stdio.h>

int tashizan( int a, int b );   // 関数宣言

void main ()
{
    int ret=0;
    int first,second=0;

    first = 1020;
    second = 20;

    ret = tashizan(first,second); // 関数コール
    printf("%d + %d = %d\n",first,second,ret);

    return;
}

int tashizan( int a, int b )
{
    int sum;
    sum = a+b;

    return sum;
}

 

関数宣言の方法は、

・main()関数の前で関数宣言を行って、関数の実態は、main()関数の後に記述する。

・main()関数の前で関数の実体を記述する。この場合、関数宣言を省略できる。

・関数宣言をヘッダファイルに記述して、Cソースファイルにインクルードする。

の3通りで行うことができます。

上記の例では、1つ目の記述で行っていますが、アプリケーション作成など大きなプログラムの場合、

多数のソースファイルから使用されるような関数は、3つ目のヘッダファイルにまとめて記述します。

状況に応じて使い分けると良いです。

 

また、上記の例で使用した関数をヘッダファイルに記述したプログラムは、下記のようになります。

ヘッダフィル( kansu.h )の内容

int tashizan( int a, int b); 

 

 ソースファイル( kansu.c )の内容 

#include <stdio.h>
#include "kansu.h" // ここでtashizan()関数があるヘッダファイルをインクルードする。

void main ()
{
    int ret=0;
    int first,second=0;

    first = 1020;
    second = 20;

    ret = tashizan(first,second); // 関数コール
    printf("%d + %d = %d\n",first,second,ret);

    return;
}

int tashizan( int a, int b )
{
    int sum;
    sum = a+b;

    return sum;
}

 

tashizan()関数を宣言しているkansu.hをインクルードすることで、

main()関数の前後関係を気にすることなく、tashizan()関数の実体を記述することができます。

 

kansu.hをインクルードする際に使用しているダブルクォーテーション「" "」は、

ソースファイルと同じフォルダにヘッダファイルがある場合に使用します。

stdio.hのインクルードで使用している「<>」は、システム的にインクルードパスが通っているファイルの場合に使用します。 

 

4.最後に

 

関数の考え方は、ほとんどのプログラム言語で活用できますし、関数を使用していないアプリケーションプログラムはありません。

プログラムを作成する上で、関数を理解することは必須になります。

 

 

<関連・おすすめ記事>

WindowsでC言語のプログラミング環境構築手順 - 水瓶座列車

Linux勉強用の中古パソコンおすすめショップランキング - 水瓶座列車

C言語の始め方と基本構造、コンパイルから実行までを解説 - 水瓶座列車

C言語のデータ型と変数、関数について解説 - 水瓶座列車

C言語の繰り返し構文( while, do while, for )の解説と応用 - 水瓶座列車

C言語の演算子と優先順位の解説 - 水瓶座列車

C言語の構造体について解説 - 水瓶座列車