ITメモ
C言語 / Programming Language C
開発環境 / Development Environment
【Mac】Xcode【Win】Visual Stadio
基礎 / Basic
About C言語書式コメントコンパイルとリンクメイクファイル / Makefileヘッダファイル変数定数型 / Type配列 / Arrayポインタ / Pointer演算子 / Operator制御文 / Control Statement関数指定子 / 修飾子構造体と共用体 / Structure & Unionプリプロセッサ / PreprocessorthisキーワードTypedef
入出力 / Input & Output
入出力入力フォーマット指定子出力フォーマット指定子「printf」関数を使って文字を出力・表示させる方法「printf_s」関数を使って文字を出力・表示させる方法「scanf」関数を使って入力させる方法「scanf_s」関数を使って入力させる方法「getchar」関数を使って「1文字」だけ入力させる方法「gets」関数を使って「文字列」を入力させる方法
文字列 / String
文字列 / String「snprintf」関数で「配列」に文字列を書き込む方法
ネットワーク / Network
memset - メモリブロックのセット
メモリー管理
メモリー
オペレーション / Operation
ファイルを操作をする方法コマンドラインプログラム / Command-Line Programプロセス / Processソケット通信 / Socket Communication
用語集 / Glossary
サブルーチン / Subroutineスタックとキュー / Stack & Cueスレッド / Thread
C言語標準ライブラリ(ヘッダファイル)
C言語標準ライブラリ【assert.h】 - 診断機能【complex.h】 - 複素数計算【ctype.h】 - 文字操作【errno.h】 - エラー【fenv.h】 - 浮動小数点環境【float.h】 - 浮動小数点型の特性【inttypes.h】 - 整数型の書式の変換【iso646.h】 - 代替つづり(Alternate spellings)【limits.h】 - 整数型の大きさ【locale.h】 - 文化圏固有操作【math.h】 - 数学【setjmp.h】 - 非局所分岐【signal.h】 - シグナル操作【stdalign.h】 - アライメント【stdarg.h】 - 可変個数の実引数【stdatomic.h】 - アトミック操作【stdbool.h】 - 論理型および論理値【stddef.h】 - 共通の定義【stdint.h】 - 整数型【stdio.h】 - 入出力【stdlib.h】 - 一般ユーティリティ【stdnoreturn.h】 - _Noreturn【string.h】 - 文字列操作【tgmath.h】 - 型総称数学関数(Type-generic math)【threads.h】 - マルチスレッド【time.h】 - 日付及び時間【uchar.h】 - Unicodeユーティリティ【wchar.h】 - 多バイトおよびワイド文字拡張ユーティリティ【wctype.h】 - ワイド文字種分類およびワイド文字大文字小文字変換ユーティリティ
C言語ライブラリ(ヘッダファイル)
C言語ヘッダファイル【winsock.h】





【C言語】変数 / Variable

【C言語】
変数 / Variable




「C言語」における
「変数」の扱いについてまとめています。

・宣言
・代入
・初期化
・型
・変数名
・予約語

など、
「変数」の使い方を主に記載しています。


詳しくは、
下記をご参照ください。



「変数」とは


「変数」は、
プログラミングにおいて、
「値」を保持する「箱」の役目を果たす機能です。

「箱」の種類によって、
保持できる「値」の種類「型」が決まります。

「変数」を使用するときは、
変数の「型」も決めて、
「変数」を「宣言」し、
「値」を代入する作業が必要になります。


Back

「変数」の「種類」と「有効範囲(スコープ)」


「変数」には、
いくつかの種類があり、
それぞれの変数には、
有効範囲があり「スコープ」という。

簡単に言えば、
変数が使える範囲。
変数を宣言した場合、
その変数がどこで有効なのかが決ります。



変数の種類と有効範囲(スコープ)
プログラミング言語変数有効範囲
C言語 ローカル変数 「ローカル変数」は、
宣言された関数の内側のみが「有効範囲(スコープ)」となっている。

有効範囲は、宣言した「関数」内のみなので、
他の「関数」からは利用ができない。
グローバル変数 「グローバル変数」は、
関数の外側で宣言された変数で、
有効範囲は、プログラム全体。

どの関数からも「グローバル変数」を呼び出すことができる。
変数宣言する場所は、
「ヘッダーファイルの呼び込み」の記述と
「main関数」の記述の間で、
プログラムの最初に宣言する。
静的変数 「ローカル変数」とは違い、
「静的変数」は、
「関数」を呼び出す度に初期化されずに、
「値」を保持できるのが特徴。

「静的変数」にするには、
宣言の時に、「静的変数」の宣言をすること。

「静的変数」を使用するには、
使用したい関数内で、
「static 型名 変数名;」
と宣言するだけ。

「静的変数」にすることで、
プログラム中に、 同じ関数を「複数回」呼び出されても、
最後に呼び出された時の
「静的変数」の「値」を保持してくれる。
「静的変数」は、
プログラムの「開始処理時」に「一度」だけ「初期化」される。


同一変数名の扱い 同じ名前の変数が、ローカル変数とグローバル変数にある場合、
ローカル変数の有効範囲内では、ローカル変数が優先され、グローバル変数は使用できない。
C++ローカル変数 変数を宣言したブロック{}の中でのみ有効
ifなどの構文内での宣言された場合、有効範囲は、構文内のみ。
グローバル変数 関数外、ブロック{}外で、変数宣言したものがグローバル変数となる。

同一変数名の扱い 同じ名前の変数が、いくつもあった場合、最も内側の変数が使用される。
同じ名前のグローバル変数を呼び出したい時は、「::変数名」=「グローバル変数」として扱われる。


Back

「グローバル変数」の宣言位置


「グローバル変数」の宣言位置は、
「ヘッダーファイルの呼び込み」の記述と
「main関数」の記述の間に、
「グローバル変数」の宣言を記述することになっています。



「ソースファイル」
//------------------------------------------------
ヘッダファイルの読み込み
//------------------------------------------------
定数の宣言
//------------------------------------------------
グローバル変数の宣言
型 変数名;
extern 型 変数名;
//------------------------------------------------
関数の実装 //------------------------------------------------


Back

「C言語」での「変数」の書式


「C言語」での「変数」は、
「型」「変数名」「値」を
組み合わせて記述することで、
「変数」を操作することができる。

「ローカル変数」と「グローバル変数」の書式は同じ。
「静的変数」の宣言だけ先頭に「static」を加えて宣言する。


「ローカル変数」と「グローバル変数」は、
宣言する位置で、
「ローカル変数」か「グローバル変数」が決まる。
「グローバル変数」の宣言位置が決まっていて、
「ヘッダーファイルの呼び込み」の記述と
「main関数」の記述の間で宣言をすることで、
「グローバル変数」となる。

「ローカル変数」は、
関数内で宣言することで、
関数内でのみ使える「ローカル変数」となる。


変数の宣言と代入
変数の宣言
C言語型 変数名;
C++型名 変数名;
変数の代入
C言語型 変数名;
C++型名 変数名;
変数のポインタを参照
C言語&変数
C++
変数の代入
C言語変数名=値
C++変数名=値




変数のサンプルコード
変数の宣言
型名 変数名;

int a;
double d;

静的変数の宣言 static 型名 変数名;

static int a;

他のソースコードで「グローバル変数を使いたい場合の宣言 extern 型 変数名;



変数への代入
変数名 = 値;

a = 1;
d = 2.0;


「型変換」をして代入をする方法
(double)a = 2.0;
(int)d = 1;


変数の初期化
型 変数名 = 値;

int a = 1;
double d = 2.0;



変数の初期化

「変数」の「初期化」は、
変数を宣言して作成する時に、
同時に、「値」を代入することを「初期化」という。

型 変数名 = 値;


明示的に、
「変数」を宣言するときに、
「値」を「変数」に代入しない場合、
「値」は、「0」となる。



変数の値

NULL(ヌル)空ポインタ定数
NUL(ナル)/0=値0の文字



型の使用例

宣言と代入
(signed) char 宣言のみ
char ch1, ch2;

宣言と代入(初期化)
char ch1 = 'A';

代入(16進数で4Chを代入)
ch2 = 0x4C;

文字の宣言
Char a;

文字列の宣言
Char a[30];
unsigned char
(signed) short (int)
unsigned short (int)
(signed) long (int)
unsigned long (int) 宣言のみ
unsigned long l;

代入(long型lに'C'のASCIIコード4Chを代入)
l = 'C';
(signed) int 宣言のみ
int a, b;

代入(aとbに100を代入)
a = b = 100;

整数の宣言
int a;
unsigned int
float 宣言のみ
float f;

代入
f = 3.1415;
double 宣言のみ
Double a;


Back

「C言語」での変数名の条件


「C言語」における「変数名」を付けるときの条件は、
・「半角英数字」および「半角アンダーバー(_)」のみ使用可能
・最初の「1文字」は「英字」にする
・「大文字」「小文字」は区別される
・「31文字」以内であること(古いコンパイラでは最初の6文字)
・「予約語」は使用できない
などがあります。
条件から外れた場合は、
「変数」としての扱われず、エラーとなります。

「予約語」は、
「C言語」が使用するため、
あらかじめ「予約語」の「変数名」を作成できないようになっています。


Back

「C言語」の予約語


  • auto
  • break
  • case
  • char
  • const
  • continue
  • default
  • do
  • double
  • else
  • enum
  • extern
  • float
  • for
  • goto
  • if
  • int
  • long
  • register
  • return
  • short
  • signed
  • unsigned
  • void
  • volatile
  • while


Back

「C言語」における「変数」の「型」


データの種類意味
C言語
整数(signed) char 1Byte
-128~+127
整数unsigned char 1Byte
0~+255
整数(signed) short (int) 2Byte
-32768~+32767
整数unsigned short (int) 2Byte
0~+65535
整数(signed) long (int) 4Byte
-2147483648~+2147483647
整数unsigned long (int) 4Byte
0~+4294967295
整数(signed) int 2Byte or 4Byte
(signed) short (int)もしくは(signed) long(int)と同じ
整数unsigned int 2Byte or 4Byte
(signed) short (int)もしくは(signed) long(int)と同じ
小数float 4Byte
仮数部232、指数部28
小数double 8Byte
仮数部252、指数部211
C++
論理型boolプール値(true または false)を扱う
整数型char 8ビット符号付整数 0~255
MBCS(MultiByte Character Set)の文字を扱う。
文字型wchar_t ワイド文字「Unicode(16ビット)」の文字を扱う。
C言語にはない型。
整数型short16ビット符号付整数 -32768~32767
整数型int32ビット符号付整数 -2147483648~2147483647
整数型long64ビット符号付整数 -9223372036854775808~ 9223372036854775807
浮動小数点型float32ビット単精度浮動小数点を扱う
浮動小数点型double64ビット単精度浮動小数点を扱う


Back