C言語の学習、始めてみたはいいものの、いきなり「C言語 変数 宣言」なんて言葉が出てきて、「???」となっていませんか?
プログラミングの世界に足を踏み入れたばかりだと、専門用語に戸惑うこともありますよね。でも大丈夫!
変数の宣言は、プログラムを作る上で避けては通れない、いわば基礎工事みたいなもの。一見むずかしそうに感じるかもしれませんが、仕組みさえわかれば「なーんだ、そういうことか!」ってなるはずですよ!
この記事では、C言語の「変数宣言」について、とことん分かりやすく解説していきます。この記事を読み終わるころには、変数宣言マスターに一歩近づいていること間違いなし!さあ、一緒に学んでいきましょう!
この記事で学べること
- 変数ってそもそも何? どうして必要なの?
- C言語で変数を宣言する書き方のルール
- よく使う変数の種類(データ型)
- 変数にカッコイイ(分かりやすい)名前を付けるコツ
- 変数を作ると同時に値も入れちゃう方法(初期化)
- 初心者がやっちゃいがちなミスとその対策
C言語の「変数」とは?プログラムの「箱」を理解しよう
まず、「変数」って一体なんでしょう?
すごく簡単に言うと、プログラムの中でデータ(数値や文字など)を一時的に入れておくための「名前付きの箱」みたいなものです。
例えば、ゲームでプレイヤーの得点を覚えておく必要があるとします。その得点を入れておく「箱」が変数です。箱には「得点」とか「score」みたいな名前を付けておけば、後からその箱の中身を見たり、増やしたり減らしたりできるわけですね!
プログラムはいろんなデータを扱います。計算結果を覚えたり、ユーザーが入力した文字を保存したり。そんなとき、データを保管する場所として変数が必要になるのです。
変数のイメージ図 +-------------+ | 箱 (変数) | <-- 名前: score (変数名) | +-------+ | | | 100 | | <-- 中身: データ (値) | +-------+ | +-------------+ <-- 型: int (データ型)
↑こんな感じ!名前(score)と型(int)がついた箱に、データ(100)が入っています。
なぜC言語では「変数宣言」が必須なの?
他のプログラミング言語の中には、いきなり変数を使えちゃうものもあります。でも、C言語では使う前に「こういう名前で、こういう種類のデータを入れる箱を使いますよー!」と、あらかじめコンピューターに教えてあげる必要があります。これを「変数宣言」といいます。
なんでこんな事前申告が必要なんでしょう?
C言語はプログラムを実行する前(コンパイル時といいます)に、使う変数についてしっかりチェックする仕組みになっているからです。事前に宣言することで、コンピューターは
- そのデータを入れるのに適切な大きさのメモリ(記憶場所)を確保できる
- 入れようとしているデータの種類(型)が間違っていないかチェックできる
というメリットがあります。ちょっと面倒に感じるかもしれませんが、事前にしっかり準備することで、プログラムが動いている途中で変なエラーが起きるのを防いでくれる、いわば安全装置のような役割を果たしているのですよ。
C言語での基本的な「変数宣言」の方法【構文解説】
さあ、いよいよ変数宣言の書き方です!
C言語で変数を宣言するときの基本ルール(構文といいます)は、次のようになります。
データ型 変数名;
たったこれだけ!シンプルですね。
それぞれの部分を見ていきましょう。
- データ型
その変数(箱)にどんな種類のデータを入れるかを指定します。数字なのか、文字なのか、などですね。詳しくは次の見出しで! - 変数名
その変数(箱)に付ける名前です。自分で自由に(ただしルール内で)決められます。分かりやすい名前を付けましょう。 - ; (セミコロン)
文の終わりを示す記号です。C言語では、命令の最後にセミコロンを付けるのがお約束。これを忘れるとエラーになるので、絶対に忘れないでくださいね!
例えば、「age」という名前で整数を入れるための変数を宣言したい場合は、こう書きます。
int age;
これで、「age」という名前の整数(int)を入れる箱が用意できました!
まずはこれだけ!C言語の基本的なデータ型 (int, float, char)
変数宣言には「データ型」が必要でしたね。
データ型はたくさん種類がありますが、初心者のうちは、まず次の3つを覚えておけばOK!
- int (イント)
整数を入れるための型です。例えば、年齢、個数、得点など、小数点が付かない数字に使います。
例:int score;
(スコアを入れる変数) - float (フロート)
小数点を含む数値(浮動小数点数といいます)を入れるための型です。例えば、身長、体重、平均点など、小数点以下の精度が必要な数字に使います。
例:float height;
(身長を入れる変数) - char (チャー または キャラ)
一文字だけを入れるための型です。例えば、性別('M'とか'F'とか)、評価('A'とか'B'とか)などに使います。文字を入れるときは、シングルクォーテーション' '
で囲むのがルールです。
例:char grade;
(成績を入れる変数)
コンピューターの中では、データ型によって確保されるメモリの大きさが違います。今は「ふーん、型によって大きさ違うんだ」くらいに思っておけば大丈夫ですよ。
同じデータ型の変数をまとめて宣言する方法
例えば、ゲームで使う変数が3つあって、全部整数(int)型だとしましょう。
普通に書くと…
int hp; int mp; int level;
となりますが、ちょっと面倒ですよね。
そんなとき、同じデータ型なら、カンマ,
で区切ってまとめて宣言できちゃいます!
int hp, mp, level;
ほら、スッキリ!
コードが短くなって読みやすくなりますね。ただし、違うデータ型の変数を混ぜて宣言することはできないので注意してください。
C言語の「変数宣言」における命名規則と注意点
変数名は、基本的には自分で好きな名前を付けられます。
でも、いくつか守らないといけないルールと、守ったほうが良い「お作法」があります。
【守らないといけないルール】
- 使える文字は半角の英数字 (a-z, A-Z, 0-9) とアンダースコア (_) だけです。
- 最初の文字に数字は使えません。 (例:
2banme
はNG) - 大文字と小文字は区別されます。 (例:
age
とAge
は別の変数として扱われます) - 予約語(キーワード)は使えません。
予約語というのは、C言語の文法であらかじめ意味が決まっている単語のことです。例えば、さっき出てきた int
や float
、char
などはデータ型を表す予約語なので、変数名には使えません。他にも if
, for
, while
など、いろいろあります。
予約語の例 (一部): int, float, double, char, void, if, else, for, while, do, switch, case, break, continue, return, sizeof, struct, typedef ...など
全部覚える必要はありませんが、「なんか見たことあるな」と思ったら、変数名に使うのは避けたほうが無難です。
意味が伝わる変数名をつけよう!
ルールさえ守ればどんな名前でも付けられますが、プログラムは自分だけでなく、後で見返したり、他の人が読んだりすることもあります。
だから、その変数が何を表しているのか、パッと見て分かる名前を付けるのが、とっても大事なんです!
例えば、ユーザーの年齢を入れる変数を作りたいとき…
- 悪い例:
int x;
(xって何? 分かりにくい…) - 悪い例:
int n;
(nも何の略か不明…) - 良い例:
int user_age;
(ユーザーの年齢だとすぐ分かる!) - 良い例:
int ageOfUser;
(これも分かりやすい!)
ちょっと長くなっても、意味が通じる名前を付けるように心がけましょう。
単語と単語をつなげるときは、user_age
のようにアンダースコアでつなぐ方法(スネークケース)や、ageOfUser
のように二つ目以降の単語の先頭を大文字にする方法(キャメルケース)がよく使われます。どちらを使うかは好みやチームのルールによりますが、一貫性を持たせることが大事ですよ。
C言語の「変数宣言」と同時に初期値を入れる「初期化」
変数宣言は、いわば「箱を用意する」ことでしたね。
でも、用意したばかりの箱の中身って、どうなっていると思いますか? 実は、何が入っているか分からない(不定な値、ゴミデータとも呼ばれます)状態なんです。
これだと、後でその箱の中身を使おうとしたときに、予期せぬ動きをしてしまう可能性があります。
そこで、「初期化」という作業が役立ちます!
初期化とは、変数を宣言すると同時に、最初の値(初期値)を入れてあげることです。書き方は簡単!
データ型 変数名 = 初期値;
宣言の書き方の後ろに = 初期値
を付け加えるだけです。
例を見てみましょう。
// 宣言だけの場合 (中身は不定) int score; float average; char initial; // 宣言と同時に初期化する場合 int score = 0; // scoreという箱を用意して、最初に0を入れておく float average = 0.0; // averageという箱を用意して、最初に0.0を入れておく char initial = 'A'; // initialという箱を用意して、最初に'A'を入れておく
こうしておけば、変な値が入っている心配がなくなり、プログラムが安定します。特に理由がなければ、変数を宣言するときは初期化も一緒にしておくのがおすすめです!
実践!C言語の「変数宣言」を使った簡単なプログラム例
さて、ここまで学んだことを使って、簡単なプログラムを書いてみましょう!
ここでは、年齢(age)と身長(height)を表す変数を宣言・初期化して、その値を画面に表示するプログラムを作ってみます。
#include <stdio.h> int main(void) { // 変数を宣言し、同時に初期化する int age = 20; // 年齢を入れる変数(整数型) float height = 175.5; // 身長を入れる変数(浮動小数点数型) char blood_type = 'A'; // 血液型を入れる変数(文字型) // printf関数を使って変数の値を表示する // %d は整数、%f は浮動小数点数、%c は文字を表示するための目印 printf("年齢は %d 歳です。\n", age); printf("身長は %.1f cmです。\n", height); // .1 は小数点以下1桁まで表示する指定 printf("血液型は %c 型です。\n", blood_type); return 0; }
これを実行すると、画面には次のように表示されるはずです。
年齢は 20 歳です。 身長は 175.5 cmです。 血液型は A 型です。
どうでしょう? 変数宣言と初期化、そしてその変数をprintf
で使っている流れがイメージできたでしょうか? printf
の%d
などは、今は「変数の値を表示するためのおまじない」くらいに思っておいてくださいね。
C言語の「変数宣言」で初心者が陥りやすいミスと対策
変数宣言は基本ですが、慣れないうちは誰でもミスをするものです。
ここでは、初心者がよくやってしまうミスと、その対策をいくつか紹介しますね。
- ミス1:セミコロン
;
忘れ
C言語では文の終わりにセミコロンが必須! 付け忘れるとコンパイルエラーになります。
対策:書いたら必ず確認するクセをつける! - ミス2:データ型の指定忘れ
my_variable;
のようにデータ型を書かないと、何の箱か分からずエラーになります。
対策:int my_variable;
のように、必ず型を書きましょう。 - ミス3:宣言していない変数を使おうとする
宣言していない名前の変数を使おうとすると、「そんな名前の箱知らないよ!」と怒られます(エラー)。
対策:使う前に必ず宣言する!スペルミスにも注意! - ミス4:予約語を変数名にしてしまう
int int;
のように予約語を使うとエラーになります。
対策:変数名が予約語っぽくないか確認する。迷ったら少し変える。 - ミス5:大文字と小文字の間違い
int Score;
と宣言したのにscore = 100;
のように使おうとすると、別の変数だと認識されてエラーになることがあります。
対策:宣言したときの名前と、使うときの名前の大文字・小文字を一致させる。 - ミス6:初期化忘れによる不定値の使用
宣言だけして初期化しなかった変数の値を、そのまま計算などに使ってしまうと、予期せぬ結果になることがあります。
対策:できるだけ宣言と同時に初期化する習慣をつける。
エラーが出るとドキッとするかもしれませんが、めげずにエラーメッセージをよく読んでみましょう。どこで間違えているか教えてくれることが多いですよ!
【まとめ】C言語の「変数宣言」をマスターして次のステップへ
お疲れ様でした!
この記事では、C言語のプログラミングに欠かせない「変数宣言」について、基本から解説してきました。
ポイントを振り返ってみましょう!
- 変数とは、データを一時的に入れておく名前付きの箱のこと。
- C言語では、使う前に必ず「データ型 変数名;」の形で宣言が必要。
- 基本のデータ型は int (整数), float (小数), char (一文字) をまず覚えよう!
- 変数名にはルールがある。分かりやすい名前を付けるのがコツ。
- 宣言と同時に初期値を設定する「初期化」(例:
int age = 20;
)を心がけよう。 - セミコロン忘れなどのうっかりミスに注意!
変数宣言は、本当にC言語の第一歩です。でも、この一歩をしっかり理解できたあなたは、もう立派なプログラマーへの道を歩み始めています!
自信を持って、どんどんコードを書いて、動かしてみてくださいね。次は演算子やif文など、もっとプログラムらしいことができるステップに進んでいきましょう!
【関連記事】
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。