C言語と変数を理解するための10ステップガイド

C言語と変数について学ぶためのガイドブックC言語
この記事は約12分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

プログラミング言語の一つであるC言語を学ぶ上で、最も重要な概念の一つが「変数」です。

C言語の変数を理解することは、プログラミングスキルを向上させるための基礎となります。

この記事では、プログラミング初心者向けにC言語の変数を理解するための10のステップを詳しく解説します。

●C言語とは

C言語は、1970年代に開発された汎用プログラミング言語で、その高速性と直感的な表記法により広く使われています。

また、C言語は他の多くのプログラミング言語の基礎となっているため、C言語を理解することは他の言語を学ぶ際の基礎知識を身につけることにもつながります。

●変数とは

○変数の定義

変数とは、プログラミングにおける値を一時的に保存するための容器のようなものです。

変数は、その値を後で参照したり、新たな値に更新したりするために使われます。

例えば、C言語では次のように変数を定義します。

int num;

このコードでは、整数を保存するための変数numを定義しています。

○変数の初期化

変数を定義したら、初期値を設定することが一般的です。

これを変数の初期化と言います。例えば、次のように変数numを0で初期化します。

int num = 0;

この例では、変数numに初期値として0を設定しています。

●変数の種類

C言語には、さまざまな種類の変数があります。

これらの変数の種類は、それぞれが保存できる値の範囲や種類によって決まります。

○整数型変数

整数型変数は、整数を保存するための変数です。

次のように定義します。

int number = 10;

このコードでは、整数型の変数numberを定義し、初期値として10を設定しています。

○浮動小数点型変数

浮動小数点型変数は、小数を保存するための変数です。

次のように定義します。

float number = 10.5;

このコードでは、浮動小数点型の変数numberを定義し、初期値として10.5を設定しています。

○文字型変数

文字型変数は、単一の文字を保存するための変数です。

次のように定義します。

char letter = 'A';

このコードでは、文字型の変数letterを定義し、初期値として’A’を設定しています。

○論理型変数

論理型変数は、真偽値(真または偽)を保存するための変数です。

次のように定義します。

bool flag = true;

このコードでは、論理型の変数flagを定義し、初期値としてtrue(真)を設定しています。

○配列

配列は、同じ型の複数の値を一つの変数で管理するための構造です。

次のように定義します。

int numbers[5] = {1, 2, 3, 4, 5};

このコードでは、整数型の配列numbersを定義し、初期値として1, 2, 3, 4, 5を設定しています。

●変数のスコープとは

変数のスコープとは、その変数が参照可能な範囲のことを指します。

C言語では、変数のスコープはその変数が定義された場所によって決まります。

○ローカル変数

ローカル変数とは、特定の関数やブロック内でのみ参照できる変数のことを指します。

次のコードでは、関数func内でローカル変数numを定義しています。

void func() {
  int num = 0;
}

この関数func内でのみ変数numを参照することが可能です。

○グローバル変数

グローバル変数とは、プログラム全体から参照できる変数のことを指します。

次のコードでは、関数の外でグローバル変数numを定義しています。

int num = 0;

void func() {
  num = 10;
}

このコードでは、関数func内でもグローバル変数numを参照し、値を更新しています。

●変数の命名規則

変数を作成する際には、一定の命名規則を守る必要があります。

C言語の変数名は英字で始まり、その後に英字、数字、アンダースコアを含めることができます。

ただし、大文字と小文字は区別されるので注意が必要です。

●変数の使用例

それでは、具体的に変数がどのように使われるのかを見ていきましょう。

各サンプルコードでは、そのコードの実行結果がどうなるかも合わせて解説します。

○サンプルコード1:整数型変数の使用例

#include <stdio.h>

int main() {
    int number = 10;
    printf("%d\n", number);
    return 0;
}

このコードでは整数型変数numberを定義し、初期値として10を設定しています。

その後、printf関数を使って変数numberの値を出力しています。

このコードを実行すると、出力結果は”10″となります。

○サンプルコード2:浮動小数点型変数の使用例

#include <stdio.h>

int main() {
    float number = 10.5;
    printf("%f\n", number);
    return 0;
}

このコードでは、浮動小数点型変数numberを使って、小数を保存し出力するプログラムを表しています。

最初にnumberという名前の浮動小数点型の変数を作成し、10.5という値を初期値として設定しています。

その後、printf関数を用いてその値を出力します。

このプログラムを実行すると、出力結果は”10.500000″となります。

printf関数で%fを使うと、デフォルトで6桁の小数を出力するため、出力は10.500000となります。

○サンプルコード3:文字型変数の使用例

#include <stdio.h>

int main() {
    char letter = 'A';
    printf("%c\n", letter);
    return 0;
}

このコードは文字型変数letterを使って単一の文字を保存し出力するプログラムを表しています。

最初にletterという名前の文字型の変数を作成し、’A’という値を初期値として設定しています。

その後、printf関数を用いてその値を出力します。

このプログラムを実行すると、出力結果は”A”となります。

○サンプルコード4:論理型変数の使用例

#include <stdio.h>
#include <stdbool.h>

int main() {
    bool flag = true;
    printf("%s\n", flag ? "true" : "false");
    return 0;
}

このコードは論理型変数flagを使って真偽値を保存し出力するプログラムを表しています。

最初にflagという名前の論理型の変数を作成し、trueという値を初期値として設定しています。

その後、printf関数を用いてその値を出力します。

ただし、C言語のprintf関数は論理値を直接出力することはできないため、三項演算子を使って論理値を文字列に変換しています。

このプログラムを実行すると、出力結果は”true”となります。

○サンプルコード5:配列の使用例

#include <stdio.h>

int main() {
    int numbers[5] = {1, 2, 3, 4, 5};
    for (int i = 0; i < 5; i++) {
        printf("%d ", numbers[i]);
    }
    return 0;
}

このコードは配列numbersを使って複数の整数を保存し出力するプログラムを表しています。

まずnumbersという名前の整数型の配列を作成し、初期値として1, 2, 3, 4, 5を設定しています。

その後、forループを使って配列の各要素を順番に出力します。

このプログラムを実行すると、出力結果は”1 2 3 4 5 “となります。

●変数を使ったプログラムの作成

さて、これまでの理解を基に、具体的なプログラムを作成する段階に入りましょう。

今から紹介する各サンプルコードでは、異なる種類の変数がどのように利用されるかを表します。

それぞれのサンプルコードは実際に実行可能な形で記述されており、説明も添えています。

○サンプルコード7:簡単な計算プログラム

このコードは整数型変数を使った簡単な計算プログラムを表しています。

計算結果は浮動小数点型変数に保存されます。

#include<stdio.h>
int main() {
  int a = 5;    // 整数型変数aに5を代入
  int b = 2;    // 整数型変数bに2を代入
  double result; // 浮動小数点型変数resultを定義

  result = (double)a / b;  // aをdouble型にキャストしてbで割った結果をresultに保存
  printf("%f\n", result);  // resultを出力

  return 0;
}

このプログラムは、変数aとbの値を除算し、その結果をresultに保存します。

aをdouble型にキャストすることで、割り算の結果が正確な小数になるようにしています。

このコードを実行すると、「2.500000」と出力されます。

○サンプルコード8:条件判断を行うプログラム

次に、論理型変数と条件文を使ったプログラムを紹介します。

このプログラムは整数が偶数か奇数かを判断します。

#include<stdio.h>
int main() {
  int num = 11;  // 整数型変数numに11を代入
  int remainder = num % 2;  // numを2で割った余りをremainderに保存

  if (remainder == 0) {  // 余りが0なら偶数
    printf("%dは偶数です。\n", num);
  } else {               // そうでなければ奇数
    printf("%dは奇数です。\n", num);
  }

  return 0;
}

このコードは、変数numに格納された整数が偶数か奇数かを判断します。

整数を2で割った余りが0なら偶数、そうでなければ奇数と判断します。

実行すると、「11は奇数です。」と出力されます。

○サンプルコード9:配列を用いたデータ処理プログラム

この例では、整数型の配列を使って複数のデータを一度に処理する方法を紹介します。

このプログラムでは、配列のすべての要素を順に出力します。

#include<stdio.h>
int main() {
  int numbers[] = {10, 20, 30, 40, 50};  // 整数型配列numbersを定義し、5つの要素を初期化
  int i; // カウンタ変数を定義

  for(i = 0; i < 5; i++) { // 配列のすべての要素を順に出力
    printf("%d\n", numbers[i]);
  }

  return 0;
}

このコードでは、forループを用いて配列numbersのすべての要素を順に出力します。

ループ変数iは、配列のインデックスとして機能します。

このプログラムを実行すると、10から50までの数字が順に出力されます。

○サンプルコード10:ローカル変数とグローバル変数を使ったプログラム

これまで、ローカル変数とグローバル変数の概念を解説し、それぞれの特性と使い方を見てきました。

ここでは、その両方を活用した具体的なプログラムを紹介します。

下記のC言語のコードでは、グローバル変数とローカル変数を使用しています。

#include <stdio.h>

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

void func(){
    // ローカル変数の定義
    int localVar = 200;
    printf("ローカル変数: %d\n", localVar);
    printf("グローバル変数: %d\n", globalVar);
}

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

このコードでは、最初にグローバル変数globalVarを定義して100を代入しています。

次にfuncという関数内で、ローカル変数localVarを定義し、200を代入しています。そ

の後、これらの変数の値を出力しています。

このプログラムを実行すると、次のような結果が得られます。

ローカル変数: 200
グローバル変数: 100

これは、関数func内で定義されたローカル変数localVarの値が200、そしてグローバル変数globalVarの値が100であることを表しています。

つまり、func関数の中からは、その関数内で定義されたローカル変数とプログラム全体からアクセス可能なグローバル変数の両方にアクセスできることが分かります。

この例からもわかるように、ローカル変数とグローバル変数は、それぞれのスコープと生存期間によって使い分けることが重要です。

ローカル変数はその関数内でしか使えませんが、グローバル変数はプログラム全体で使用することができます。

しかし、グローバル変数は使いすぎるとプログラムの管理が難しくなるため、適切な使い方が求められます。

●注意点と対処法

C言語における変数の扱いにはいくつか注意が必要です。

まず一つ目は、初期化されていない変数を使用しないように注意することです。

初期化されていない変数には不定の値が入っており、プログラムが予期せぬ動作をする原因となります。

変数を宣言する際には、必ず初期値を設定するようにしましょう。

二つ目の注意点は、変数のスコープに注意することです。

変数は宣言した場所によってその有効範囲、つまりスコープが異なります。

関数内で宣言されたローカル変数はその関数内でしか使えません。

一方、関数の外で宣言されたグローバル変数はどこからでも使えます。

しかし、グローバル変数は誤って値を変更してしまう可能性があり、プログラムの動作を予期せぬ方向に導くことがあるため、使用は慎重に行うべきです。

最後の注意点は、変数の命名に注意することです。

変数名は、その変数が何を表しているのかを明確にするために、できるだけ具体的でわかりやすい名前をつけるようにしましょう。

また、C言語では同じスコープ内で同じ名前の変数を二度宣言することはできませんので、変数の命名には注意が必要です。

まとめ

この記事では、C言語における変数の理解のための10ステップについて解説しました。

変数の定義から初期化、変数の種類、スコープ、命名規則、そして変数を使ったプログラムの作成まで、具体的なサンプルコードとともに詳しく見てきました。

変数はプログラミングにおける基本的な概念であり、効果的に使いこなすことで様々な問題を解決することができます。

これらの知識を身につけ、C言語の変数を理解し、使いこなすことができれば、あなたのプログラミングスキルは大きく向上することでしょう。

プログラミングは継続的な学習が重要です。

本記事があなたの学習の一助となり、より深い理解と技術の習得への道しるべとなれば幸いです。