【C言語】staticとconstの違いや”static const”の意味や使い方を解説

この記事では、C言語における staticconst の違いや使い方について解説します。

これらのキーワードや修飾子の意味を理解することで、プログラムの変数や関数を効果的に制御し、定数を扱う方法を学ぶことができます。

目次から探す

staticとは

C言語において、staticは変数や関数に対して使用されるキーワードです。

staticキーワードを使用することで、変数や関数が静的な特性を持つようになります。

staticの使い方

静的変数の宣言と初期化

静的変数は、関数内部やブロック内部で宣言され、そのスコープがその関数やブロック内に限定されます。

静的変数は初期化されるとプログラムの実行中に一度だけ初期化され、その後の関数呼び出しやブロックの実行でも値が保持されます。

#include <stdio.h>
void func() {
    static int count = 0; // 静的変数の宣言と初期化
    count++;
    printf("Count: %d\n", count);
}
int main() {
    func(); // Count: 1
    func(); // Count: 2
    func(); // Count: 3
    return 0;
}

静的関数の宣言と定義

静的関数は、その関数が宣言されたファイル内でのみ使用可能な関数です。

他のファイルからは呼び出すことができません。

静的関数は、関数のプロトタイプ宣言や関数定義の前にstaticキーワードを付けることで宣言されます。

#include <stdio.h>
static void staticFunc() {
    printf("This is a static function.\n");
}
int main() {
    staticFunc(); // This is a static function.
    return 0;
}

constとは

C言語において、constは変数や関数の宣言に使用される修飾子です。

const修飾子を使用することで、変数や関数が定数であることを示します。

constの使い方

定数の宣言

定数は、値が変更されない変数です。

constキーワードを使用して定数を宣言することができます。

#include <stdio.h>
int main() {
    const int num = 10; // 定数の宣言
    printf("Number: %d\n", num);
    return 0;
}

定数ポインタ

const修飾子は、ポインタ変数にも使用することができます。

定数ポインタは、指し示すアドレスの値を変更できないポインタです。

#include <stdio.h>
int main() {
    int num = 10;
    const int *ptr = &num; // 定数ポインタの宣言
    printf("Number: %d\n", *ptr);
    // *ptr = 20; // エラー: 定数ポインタの値を変更できない
    return 0;
}

staticとconstの違い

staticとconstは、似たような役割を持つキーワードですが、異なる目的で使用されます。

  • staticは変数や関数のスコープやライフタイムを制御するために使用されます。
  • constは変数や関数が定数であることを示すために使用されます。

staticは変数や関数の宣言に使用されるキーワードであり、その変数や関数が静的な特性を持つことを示します。

一方、constは変数や関数の宣言に使用される修飾子であり、その変数や関数が定数であることを示します。

static constとは

static constは、変数の宣言においてstaticとconstを組み合わせて使用することを意味します。

これにより、変数が静的であり、かつ値が変更されない定数であることを示します。

static constの意味

static const修飾子を使用することで、変数がプログラムの実行中に一度だけ初期化され、その後の変更ができない定数であることを示します。

static constの使い方

static const修飾子を使用して定数を宣言する方法は、const修飾子を使用して定数を宣言する方法と同じです。

ただし、static const修飾子を使用することで、定数が静的であることを明示的に示すことができます。

#include <stdio.h>
void func() {
    static const int num = 10; // 静的な定数の宣言
    printf("Number: %d\n", num);
}
int main() {
    func(); // Number: 10
    return 0;
}

以上が、C言語におけるstaticとconstの違いやstatic constの意味や使い方です。

それぞれのキーワードや修飾子の使い方を理解し、適切に活用することで、より効果的なプログラミングが可能となります。

目次から探す