Tag Archives: C言語入門

[C言語入門]共用体でメモリを有効活用

2012年8月11日 (カテゴリ: C:)

今回は共用体です。 共用体の定義は以下のように行います。 union タグ名 { メンバ1; メンバ2; … }; 一見すると構造体っぽい定義方法で、同じように見えるかもしれませんが、構造体と、共用体ではメモリ確保のされ方が異なります。 このことを確認するために、サンプルを1つ実行してみます。 #include <stdio.h>   struct t_CHARACTER { char c0; char c1; char c2; char c3; };   union u_CHARACTER { char c0; char c1…


続きを読む

[C言語入門]ポインタを理解する その1:メモリとポインタ変数入門

2012年8月4日 (カテゴリ: C:, )

今回の説明はポインタ変数です。 ポインタ変数は、特に難しいというわけではないのですが、C言語での表記の仕方の問題で混乱する人も多いので、今回はゆっくりと順を追って説明していきます。 ポインタの理解には、前提としてコンピュータの構成要素であるメモリ(主記憶装置とも言います)の理解が必要となるので、まずこちらから説明していきます。 変数はメモリ上でどのように保持されているのか? まずは,変数とメモリについての説明です。今まで、”i=10;”といったコードを”変数に値をセットする”と説明していましたが、変数の値はコンピュータ上でどのように管理されている…


続きを読む

[C言語入門]プリプロセッサ命令を理解する

2012年8月1日 (カテゴリ: C:)

今までの学習では、gccコマンドを使用してプログラムを作成してきました。 gccを使用すると、いきなり実行ファイル(.exeファイル)が生成されていたのですが、gcc(というかCコンパイラ)は内部的に以下の手順でexeファイルを作っています。 .cファイル   ↓ プリプロセス ↓   .iファイル   ↓ コンパイル ↓   .sファイル   ↓ アセンブル ↓   .oファイル   ↓ リンク ↓   .exeファイル 上の表の見方ですが、例えば一番上のところの記述は、”.cファイル”に…


続きを読む

[C言語入門]単純作業を繰り返しさせるためにfor文を使う

2012年7月15日 (カテゴリ: C:)

前回のプログラムでは、if文やswitch文を使って処理を分岐させる方法を学びました。 今回は、繰り返し処理を説明します。 プログラム言語において、繰り返し処理は、ループ処理とも呼ばれています。 コンピュータは大量の処理/データを、繰り返し作業させるのが得意です。 人とは違ってコンピュータは、どんなに大量のデータであっても途中であきらめずに作業してくれますし、途中で集中力が途切れて間違えてしまう事も有りません。 そんな繰り返し処理ですが、C言語に限らず、プログラムでのループ処理には大きく分けて2つのパターンがあります。 1.指定した回数繰り返す 2.指定した条件が満たされるまで繰り返す プログ…


続きを読む

[C言語入門]複数の分岐をswitchでシンプルに記述する

2012年7月13日 (カテゴリ: C:)

前回、if文による処理の分岐を説明しました。 C言語によるプログラムではifさえあればあらゆる分岐は記述できるのですが、場合によってはifの羅列では分かり辛くなってしまう場合も有ります。 例えば、以下のようにメニューを用意し入力値を判定させる場合、比較対象は常にdataであるにも関わらず、毎回”data ==”を書かなければなりません。無駄な表記があると書き間違いが発生しやすくなりますし、ソースコードも見づらくなります。 #include <stdio.h>   int main() { int data;   …


続きを読む

[C言語入門]処理の内容をif文で分岐させる

2012年7月12日 (カテゴリ: C:)

前回までのサンプルで確認したように、C言語のプログラムは基本的に上から書いた順に関数が実行されていく形で動作します。 一連の作業を順に行うだけならこれで構わないのですが、プログラムによっては状況に応じて処理を分岐したい場合も出てきます。 このような場合は、if文による処理分岐を行います。 というわけで、今回のサンプルはこちらです。 点数を入力し、60点以上なら合格、60点未満なら不合格と表示するプログラムです。 #include <stdio.h>   int main() { int score;   printf( &quo…


続きを読む

[C言語入門]変数が保持できる値の範囲について

2012年7月10日 (カテゴリ: C:)

変数の宣言 今回のサンプルでは、”int result”ということで、整数型の変数resultを定義しました。 変数として宣言できるのは,int以外にも以下のデータ型があります。 char 主に文字を格納するのに使用 int 主に整数を格納するのに使用 float 主に大きくない実数値を格納するのに使用 double 主に大きな実数値を格納するのに使用 また、intに関してはshort,longの接頭語を付けることもできます。 (コンパイラによっては、long double型の宣言も可能です) short int long int long long int 上記の場合…


続きを読む

[C言語入門]計算した値を変数に保存する

2012年7月10日 (カテゴリ: C:)

前回は、指定された値を単に印字するだけのプログラムを作成しました。 コンピュータは日本語だと”電子計算機”と呼ばれるぐらいなので、今回は計算処理を行うプログラムを作成してみます。 今回のプログラムは以下の通りです。 #include <stdio.h>   main() { int result;   result = 10 + 20; printf( "result is %d\n", result ); } これを実行すると下記の出力が行われます。 プログラム中に…


続きを読む

[C言語入門]printfの書式指定

2012年7月10日 (カテゴリ: C:)

前回のサンプルでは、printfの引数に%dを指定する事で、int型の変数値を表示させていました。 この%dの事を書式指定子(conversion specifier)と呼びます。 よく使用される書式指定子には以下のものがあります。 %の後に変換文字を書く事で表示方法を指定できます。 %d 整数を表示させる %s 文字列を表示させる %c 指定された文字コードに対応する,ASCII文字を1文字分表示させる %f 浮動小数点の値を表示(doubleまたはfloat) %d 浮動小数点の値を表示(double) %x 16進数で値を表示 %g 数字を指数表現で表示   %p ポインタ変数…


続きを読む

[C言語入門]画面にメッセージを表示させてみる

2012年7月10日 (カテゴリ: C:)

文法とか細かいことは置いといて、プログラムを1つ作ってみます。 作業は、windowsにインストールしたcygwin環境で行います。 まず、下記のファイルをエディタで作成します。 #include <stdio.h> main() { printf( "hello world\n" ); } 作ったファイルは、以下のフォルダに保存してください。 (usernameの部分は、Windowsにログインしているユーザ名になります) C:\cygwin\home\username\work 保存できたらlsコマンドで作…


続きを読む