工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C言語の関数マスター:構造、宣言、ベストプラクティス

関数とは

関数は、一緒にタスクを実行する文のグループです。すべてのCプログラムには少なくとも1つの関数、つまりmain()があり、最も単純なプログラムでも追加の関数を定義できます。

コードを別々の関数に分割できます。コードを異なる関数にどう分割するかは自由ですが、論理的には各関数が特定のタスクを実行するように分割します。

関数宣言は、関数名、戻り値の型、パラメータについてコンパイラに伝えます。関数定義は関数の実際の本体を提供します。

C標準ライブラリはプログラムが呼び出せる多数の組み込み関数を提供します。例:2つの文字列を連結するstrcat()、メモリ位置を別の場所にコピーするmemcpy()など。

関数はメソッド、サブルーチン、手続きなどとも呼ばれます。

関数の定義

Cプログラミング言語における関数定義の一般形式:

return_type function_name(parameter_list) {
    body_of_the_function
}

Cでの関数定義は関数ヘッダーと関数本体で構成されます。関数のすべての部分:

例

以下はmax()という関数のソースコードです。この関数はnum1とnum2という2つのパラメータを取り、2つのうち大きい方の値を返します:

/* 2つの数値の最大値を返す関数 */
int max(int num1, int num2) {
    /* ローカル変数宣言 */
    int result;
    if (num1 > num2)
        result = num1;
    else
        result = num2;
    return result;
}

関数宣言

関数宣言は、関数名と関数の呼び出し方についてコンパイラに伝えます。関数の実際の本体は別で定義できます。

関数宣言の構成要素:

return_type function_name(parameter_list);

上記で定義したmax()関数の場合、関数宣言は:

int max(int num1, int num2);

関数宣言ではパラメータ名は重要ではなく型のみ必要なので、以下も有効な宣言です:

int max(int, int);

関数宣言は、あるソースファイルで関数を定義し、別のファイルでその関数を呼び出す場合に必要です。その場合、関数を呼び出すファイルの冒頭で関数を宣言すべきです。

関数の呼び出し

C関数を作成する際、関数が何をするかを定義します。関数を使用するには、定義されたタスクを実行するためにその関数を呼び出す必要があります。

プログラムが関数を呼び出すと、プログラム制御が呼ばれた関数に移ります。呼ばれた関数は定義されたタスクを実行し、return文が実行されるか、関数終了の閉じ括弧に達すると、メインプログラムに制御が戻ります。

関数を呼び出すには、必要なパラメータを関数名とともに渡し、関数が値を返す場合は戻り値を格納できます。例:

Live Demo
#include <stdio.h>
/* 関数宣言 */
int max(int num1, int num2);

int main() {
    /* ローカル変数定義 */
    int a = 100;
    int b = 200;
    int ret;
    /* 最大値を取得する関数呼び出し */
    ret = max(a, b);
    printf("Max value is : %d\n", ret);
    return 0;
}

/* 2つの数値の最大値を返す関数 */
int max(int num1, int num2) {
    /* ローカル変数宣言 */
    int result;
    if (num1 > num2)
        result = num1;
    else
        result = num2;
    return result;
}

max()をmain()とともに保持し、ソースコードをコンパイルしました。最終実行ファイルを実行すると:

Max value is : 200

関数の引数

関数が引数を使用する場合、引数の値を受け取る変数を宣言する必要があります。これらの変数を関数の仮パラメータと呼びます。

仮パラメータは関数内では他のローカル変数と同様に振る舞い、関数へのエントリ時に作成され、終了時に破棄されます。

関数を呼び出す際、引数を関数に渡すには2つの方法があります:

番号呼び出しタイプと説明
1値渡し
実引数の実際の値を関数の仮パラメータにコピーします。この場合、関数内でパラメータに変更を加えても実引数には影響しません。
2参照渡し
実引数のアドレスを仮パラメータにコピーします。関数内ではアドレスを使って呼び出しで使用された実際の引数にアクセスします。これにより、パラメータへの変更が引数に影響します。

デフォルトでは、Cは値渡しで引数を渡します。一般的に、関数内のコードは関数呼び出しに使用された引数を変更できません。

C言語

  1. C言語ユーザー定義関数の4つの実証済みパターン
  2. C言語で1次元・2次元配列を関数に渡す方法 – 実践ガイド
  3. C言語 標準ライブラリ関数: 実践ガイド
  4. C言語ビットフィールド:メモリ効率を最大化するテクニック
  5. C言語ファイルI/O完全ガイド:作成、オープン、管理の実践
  6. C言語可変長引数のマスター:実践ガイド
  7. C++ポリモーフィズム完全理解:仮想関数と純粋仮想関数
  8. C#のメソッド:定義、呼び出し、パラメータ渡し、再帰を完全解説
  9. Verilog関数のマスター:効率的なRTL設計のために
  10. MATLAB関数:定義、ワークスペース、入出力
  11. Pythonラムダ関数をマスターする:実例とベストプラクティス