<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=700662253386511&ev=PageView&noscript=1" />

【C言語入門】グローバル変数の使い方

長野 透
書いた人 長野 透


侍エンジニア塾ブログは、未経験からWebアプリ開発と仕事獲得をサポートする
侍エンジニア塾のオウンドメディアです。
プログラミング学習を覗き見

こんにちは!フリーランスの長野です。

グローバル変数って使ってますか?

ひとつの変数に対して処理する項目が多くなってくると、処理項目ごとに関数を分けて定義します。

そうするとどの関数からも使用できる変数が必要になってきます。

このように複数の関数から使用できる変数がグローバル変数です。

この記事では、グローバル変数について

・グローバル変数とは
・グローバル変数の使い方

という基本的な内容から、

・externの使い方

など応用的な内容についても解説していきます。

今回はグローバル変数について、使い方をわかりやすく解説します!

グローバル変数とは

グローバル変数とは、複数の関数から使用できる変数のことを言います。

これに対して、ひとつの関数内でのみ使用できる変数のことをローカル変数といいます。

グローバル変数はどの関数のブロック内にも含まれていません

ローカル変数はある関数のブロック内で定義されます。

また、グローバル変数は複数のファイルで共有して使用する場合もあります。

この場合は、グローバル変数の定義の前に「extern」句を使用して記述します。

グローバル変数の使い方

まずはひとつのファイル内でグローバル変数を使う場合についてみていきましょう。

グローバル変数は関数のブロック外に記述します。

サンプルコードで確認していきましょう。

実行結果:

このサンプルコードではfloat型のグローバル変数「answer」とchar型配列(文字列)のグローバル変数「country」が定義され、どの関数のブロック内にも含まれていません。

グローバル変数「answer」はdiv、mul、main関数内で使用され、グローバル変数「country」はgreeting、main関数内で使用されています。

グローバル変数「answer」はmain関数内のdiv関数が実行される際にdiv関数内で初期化され、使用される度に値が更新されています。

グローバル変数「country」はmain関数内で代入初期化されています。

これに対してローカル変数「f1」、「f2」はdiv関数でのみ使用されています。

externの使い方

複数のファイルで変数を共有する必要がある場合があります。

そんな場合はグローバル変数の型と変数名の定義の前に「extern」句を付けます。

グローバル変数を定義したファイルとは別のファイルから使用することになるので、ヘッダーファイルに型と変数名を定義します。

このヘッダーファイルをインクルードしたソースファイルで初期化を行います。

それではサンプルコードで確認していきましょう。

なお、このサンプルコードではグローバル変数「answer」と「country」の定義をヘッダーファイル「test.h」で行います。

このヘッダーファイルのソースコードは「test.c」ファイルで、実行処理を行うソースコードは「main.c」ファイルです。

test.h:

test.c:

main.c:

実行結果:

このサンプルコードではヘッダーファイル「test.h」でグローバル変数を定義し、ソースファイル「test.c」で初期化しています。

ヘッダーファイル「test.h」でグローバル変数を定義する際には、型と変数名の宣言の前に「extern」句を使用しています。

実行ファイル「main.c」ではヘッダーファイル「test.h」をインクルードし、別のファイルで定義したグローバル変数「answer」と「country」を使用して処理を実行しています。

まとめ

ここでは、グローバル変数の使い方について説明しました。

グローバル変数は複数の関数もしくは複数のファイルで変数を共有する必要がある場合に使用します。

使いこなすことができるように、この記事を何度も参考にして下さいね!

C言語カリキュラム無料公開中!
この記事はC言語入門完全攻略ガイド【基礎学習/応用学習/キャリア形成】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習から応用学習、さらにはキャリア形成まで体系的に学べる内容となっています。

C言語学習に必要な情報を一つにまとめていますので効率よくC言語を学ぶことが出来ます。この機会に是非活用していただければと思います。


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


現役フリーランスエンジニアによる無料体験レッスン実施中!

もし、あなたが、

  • 経験、年齢、学歴に不安がある
  • 挫折しない学習方法が知りたい
  • アプリ開発で困っている
  • エンジニアの”生”の声が聞きたい!
  • 仕事獲得の仕方がわからない
  • エンジニアに転職したいが何をすればいいかわからない

など、プログラミング学習やキャリアのことでお困りであれば、まずは『無料体験レッスン』にお申し込み下さい。

あなたにとって、最適の解決策をご提案させていただきます。

詳しくは下の画像から詳しいサービス内容をご確認ください。

cta_mtm3

非常識な結果を出した卒業生

活躍する現役エンジニア

人気記事セレクション

LINEで送る

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

長野 透

長野 透

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
info@sss-lab.com

preload imagepreload image