C言語 #3: 変数(Variables)

独習C

変数はプログラム内でデータを保存するための名前付きの場所です。C言語では、変数を使ってデータを格納し、そのデータにアクセスして操作することができます。ここでは、C言語の変数について詳しく説明します。

1.変数の宣言

変数を使用する前に、その変数を宣言する必要があります。変数の宣言には、変数の型と名前を指定します。

int a; // 整数型の変数aを宣言
float b; // 浮動小数点型の変数bを宣言
char c; // 文字型の変数cを宣言

2.変数の初期化

変数を宣言すると同時に初期化することができます。初期化とは、変数に初期値を設定することです。

int a = 10; // 変数aを宣言し、初期化
float b = 3.14f; // 変数bを宣言し、初期化
char c = 'A'; // 変数cを宣言し、初期化

3.変数の種類

C言語では、いくつかの基本的なデータ型があります。これらのデータ型を使用して変数を宣言します。

3.1.整数型

  • int: 標準の整数型
  • short: 短い整数型
  • long: 長い整数型
  • unsigned int: 符号なし整数型
int a = 10;
short b = 5;
long c = 100000;
unsigned int d = 20;

3.2.浮動小数点型

  • float: 単精度浮動小数点型
  • double: 倍精度浮動小数点型
  • long double: 拡張倍精度浮動小数点型
float a = 3.14f;
double b = 3.141592653589793;
long double c = 3.141592653589793238462643383279502884L;

3.3.文字型

  • char: 文字型
char a = 'A';

4.変数のスコープと寿命

変数のスコープは、その変数が有効な範囲を指し、寿命はその変数がメモリ内で存在する期間を指します。

4.1.ローカル変数

ローカル変数は、関数内で宣言され、その関数内でのみ有効です。関数が終了すると、ローカル変数は破棄されます。

#include <stdio.h>

void myFunction() {
    int a = 10; // ローカル変数
    printf("Value of a: %d\n", a);
}

int main() {
    myFunction();
    // printf("%d", a); // エラー: aはmyFunctionの外では使用できない
    return 0;
}

4.2.グローバル変数

グローバル変数は、関数の外で宣言され、プログラム全体で有効です。プログラムが終了するまで存在します。

#include <stdio.h>

int a = 10; // グローバル変数

void myFunction() {
    printf("Value of a in myFunction: %d\n", a);
}

int main() {
    printf("Value of a in main: %d\n", a);
    myFunction();
    return 0;
}

4.3.静的変数

静的変数は、関数内で宣言されますが、その寿命はプログラムの実行期間全体です。スコープはローカル変数と同じです。

#include <stdio.h>

void myFunction() {
    static int a = 0; // 静的変数
    a++;
    printf("Value of a: %d\n", a);
}

int main() {
    myFunction(); // aの値は1になる
    myFunction(); // aの値は2になる
    myFunction(); // aの値は3になる
    return 0;
}

5.型修飾子

型修飾子を使用して、変数の特性を変更することができます。C言語では、主に以下の型修飾子があります。

5.1.const

const修飾子を使用すると、変数の値を変更できなくなります。

const int a = 10;
// a = 20; // エラー: aは定数なので変更できない

5.2.volatile

volatile修飾子を使用すると、その変数の値がプログラムの外部から変更される可能性があることを示します。

volatile int a = 10;

5.3.register

register修飾子を使用すると、変数がCPUのレジスタに格納されるようにヒントを与えます。ただし、実際にレジスタに格納されるかどうかはコンパイラによります。

register int a = 10;

6.変数の操作

変数の値を操作するための基本的な方法について説明します。

6.1.代入演算子

代入演算子(=)を使用して、変数に値を代入します。

int a;
a = 10;

6.2.算術演算子

算術演算子を使用して、変数の値を操作します。

  • +: 加算
  • -: 減算
  • *: 乗算
  • /: 除算
  • %: 剰余
int a = 10;
int b = 20;
int sum = a + b; // 加算
int diff = a - b; // 減算
int prod = a * b; // 乗算
int quot = a / b; // 除算
int mod = a % b; // 剰余

7.総合例

#include <stdio.h>

int globalVar = 100; // グローバル変数

void demonstrateVariables() {
    const int constVar = 10; // 定数変数
    static int staticVar = 0; // 静的変数
    register int regVar = 20; // レジスタ変数

    int localVar = 5; // ローカル変数
    volatile int volVar = 15; // volatile変数

    staticVar++;
    printf("Local Variable: %d\n", localVar);
    printf("Static Variable: %d\n", staticVar);
    printf("Register Variable: %d\n", regVar);
    printf("Volatile Variable: %d\n", volVar);
    printf("Constant Variable: %d\n", constVar);
    printf("Global Variable: %d\n", globalVar);
}

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

このプログラムは、様々な種類の変数を宣言し、それらの値を出力します。demonstrateVariables関数は、呼び出されるたびに静的変数staticVarの値をインクリメントします。グローバル変数globalVarは、プログラム全体で使用されます。

まとめ

ここでは、C言語の変数について説明しました。変数の宣言、初期化、データ型、スコープ、寿命、型修飾子、および変数の操作方法について学びました。以下に、これらの概念を統合した例を示します。

購読
通知
0 Comments
Inline Feedbacks
View all comments