【C言語】関数に関するキーワード一覧と使い方

【C言語】関数に関するキーワード一覧と使い方

C言語の関数に関するキーワード

目次

return

return は関数の戻り値を指定し、関数の実行を終了するために使用されるキーワードです。

使用例


    #include <stdio.h>

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

    int main() {
        int result = add(5, 3);
        printf("結果: %d\n", result);
        return 0;
    }
    

注意点

  • 戻り値がvoidの場合、return は省略可能。
  • 関数の戻り値の型とreturnの型を一致させる。

void

void は「何も返さない」または「引数なし」の意味を持つキーワードです。

使用例


    #include <stdio.h>

    void greet() {
        printf("こんにちは!\n");
    }

    int main() {
        greet();
        return 0;
    }
    

注意点

  • 関数の戻り値がない場合に使用。
  • 引数がないことを明示する場合にvoidを指定(C++では不要)。

static

static は関数や変数のスコープを制限するキーワードです。

使用例


    #include <stdio.h>

    static int counter = 0; // ファイル内でのみ有効

    void increment() {
        counter++;
        printf("カウンター: %d\n", counter);
    }

    int main() {
        increment();
        increment();
        return 0;
    }
    

注意点

  • static関数は他のファイルから参照不可。
  • 関数内のstatic変数は関数が呼ばれても値を保持する。

inline

inline は関数をインライン展開することをコンパイラに指示するキーワードです。

使用例


    #include <stdio.h>

    inline int square(int x) {
        return x * x;
    }

    int main() {
        printf("5の二乗: %d\n", square(5));
        return 0;
    }
    

注意点

  • コンパイラの最適化次第でインライン展開されないこともある。
  • 頻繁に呼ばれる小さい関数に適用すると有効。

extern

extern は他のファイルに定義された変数や関数を参照するために使用されます。

使用例

(例として2つのファイルを使用)

file1.c


    #include <stdio.h>

    int global_var = 10;

    void print_var() {
        printf("グローバル変数: %d\n", global_var);
    }
    

file2.c


    #include <stdio.h>

    extern int global_var;
    extern void print_var();

    int main() {
        print_var();
        return 0;
    }
    

注意点

  • 変数・関数の実体は別のファイルにあることが前提。
  • ヘッダーファイルに関数プロトタイプとともに記述することが多い。

restrict

restrict はポインタに対し「他のポインタとエイリアスしない」ことを保証するキーワードです。

使用例


    #include <stdio.h>

    void add_arrays(int *restrict a, int *restrict b, int *restrict result, int size) {
        for (int i = 0; i < size; i++) {
            result[i] = a[i] + b[i];
        }
    }

    int main() {
        int x[] = {1, 2, 3};
        int y[] = {4, 5, 6};
        int z[3];

        add_arrays(x, y, z, 3);

        for (int i = 0; i < 3; i++) {
            printf("%d ", z[i]);
        }
        printf("\n");

        return 0;
    }
    

注意点

  • C99以降で使用可能。
  • コンパイラの最適化を助けるが、使用を誤ると未定義動作を引き起こす可能性あり。
コメントは受け付けていません。