水瓶座列車

どこまで行けるか、とりあえず発車します。

C言語の始め方と基本構造、コンパイルから実行までを解説

f:id:aquarius999:20190320213542p:plain

 

会社の新入社員研修では、C言語よりもJavaが重要視されていたり、

そもそもC言語自体が古いイメージがあると思いますが、

Linuxデバイスドライバカーネルのプログラムは、C言語で書かれています。

なので、仕事の需要として無くなることはまずありません。 

組み込みの仕事をやりたいと思っている方は、C言語が必須になります。 

ここでは、C言語の始め方や基本構造、プログラムのコンパイルや実行までを解説していきます。

 

 

 

 

 

1.C言語の作業環境

 

C言語を始めるにあたっての作業環境は、

C言語プログラムを実行ファイルにするためのコンパイラが必要になります。

 

コンパイラの入手は、Windowsであれば、CygwinVisual Studio Codeで、

LinuxであればGCCをインストールすることで入手することができます。

いづれもフリーでダウンロードすることができます。

 

Windowsの場合は、「WindowsでC言語のプログラミング環境構築手順 - 水瓶座列車」で、

VIsual Studio Codeについて書いていますので、参考にしてみてください。

Linuxの場合は、まずは、Linuxパソコンから準備する必要がありますので、

プログラミングを独学で勉強するためのLinuxパソコン準備手順 - 水瓶座列車

Linux勉強用の中古パソコンおすすめショップランキング - 水瓶座列車

を参考にしてみてください。

 

ここでは、Linuxパソコンを使用する前提で書いていきます。Linuxは、Ubuntu20.04を使用します。

ターミナルからC言語コンパイラであるgccコマンドがインストールされているかを確認するために、

下記を実行します。

$ gcc -v

 

インストールされていれば、以下のような感じ、コンパイラ(GCC)のバージョンが表示されます。

f:id:aquarius999:20190320213621p:plain

 

もし「Command "gcc" not found, ・・」が出力された場合は、

gccコマンドが無いので下記でgccをインストールします。

$ sudo apt install -y build-essential

 

 

2.C言語プログラムの始め方

 

C言語のプログラムは、Ubuntuのターミナルからviエディタを使って書きます。

viエディタが苦手な方は、Windows上からSambaでLinuxにアクセスして、

Windowsのエディタ(秀丸など)を使っても良いです。自分の好きなエディタを使用してください。

ここでは、viエディタを使用して説明していきます。

 

まず、下記でC言語のプログラムファイルを作成します。

$ vi test.c

 

作成は、viコマンドの後に新規ファイル名を入れて実行します。

C言語のファイル名は、test.c など拡張子に「.c」を付けます。

実行後、そのファイルが開いた状態になって、その状態から文字を入力していきます。

 

文字入力は、iを押すと挿入モードになって、入力することができます。

viエディタの使用方法は、「 私がviエディタを好きになった理由とその使い方 - 水瓶座列車」を参照してください。

 

 

3.C言語の基本構造

 

C言語の基本構造は、こんな感じです。

#include <stdio.h>

void main(){

  printf("testファイルです。\n");

}

 

1行目は、5行目のprintf()関数を使用するために、ヘッダファイルのstdio.hをインクルードしています。

3行目は、C言語のプログラムが最初に始まるmain()関数です。

5行目は、文字列「testファイルです。」を表示するためにprintf()関数を使用します。

¥nは、改行を表します。 \nでも同じ意味になります。

 

そして書いたプログラムを保存するには、Escキーを押して :(コロン)キーを押すと左下に入力が移るので、

続けてwq を入力してリターンキーを押すと保存できます。

 

 

4.C言語コンパイル手順

 

先ほど保存したプログラムを実行できるように、コンパイルを行います。

$ gcc test.c

 

コンパイルが完了して、a.outという実行ファイルが生成されます。

これでコンパイルが完了です。

しかし、このコンパイルだと実行ファイル名が常にa.outになるので、

他のプログラムをコンパイルしたときに上書きされてしまいます。

 

そこで、

$ gcc -o test test.c

 

のようにgccコマンドのオプション -o で名前を指定することでa.outではなく、

testという名前で実行ファイルが生成されます。

 

 

5.C言語プログラムの実行手順

 

実行手順は、名前を指定せずにコンパイルを行った場合は、下記のように入力します。

$ ./a.out

 

例えば、testという名前を付けてコンパイルした場合は、下記のように入力します。

$ ./test

 

入力後、リターンキーを押すとプログラムが実行されて結果が出力されます。

 

結果は、こんな感じになります。

f:id:aquarius999:20190320215340p:plain

 

以上が、C言語プログラム実行までの流れになります。

 

 

6.C言語の始め方が分かった後にやること

 

C言語の始め方が分かった後、次にやることは、C言語の文法を理解する必要があります。

ここでは、説明しませんが、C言語の文法について下記のリンクで解説していますので、

参考にしてみてください。

 

C言語の演算子と優先順位の解説 - 水瓶座列車

C言語の繰り返し構文( while, do while, for )の解説と応用 - 水瓶座列車

C言語のデータ型と変数、関数について解説 - 水瓶座列車

C言語の条件分岐構文について解説 - 水瓶座列車

C言語のポインタと配列について解説 - 水瓶座列車

C言語の構造体について解説 - 水瓶座列車

 

また、上から順に理解していかなければならない、というわけではありませんが、

C言語の基本になりますので、これからC言語を仕事や副業などで使用するならば、

全て項目についてある程度、理解しておく必要があります。

 

 

7.C言語でよく使用される用語について

 

C言語の文法以外にも、C言語でよく使用される用語について、いくつか簡単に説明します。

 

7.1 ライブラリ

 

C言語でよく使用される機能や処理をまとめたものをライブラリと言います。

C言語のライブラリには、文字列操作や数学計算などがあり、プログラミングする前に、

どのようなライブラリがあるかを知っておくと、自分でプログラミングする手間を省くことができます。

プログラムでライブラリを使用したい場合は、ライブラリのヘッダーをインクルードして、

コンパイル時にライブラリをリンクすると、使用することができます。

例えば、stdlib.h や string.h、 math.h、time.h などがあります。

 

 

7.2 コンパイルオプション

 

コンパイルオプションは、4項の「-o」のように、コンパイル時に指定するオプションです。

ライブラリを使用したプログラムをコンパイルする際は、コンパイルオプションの「-l」を使用して、

ライブラリをリンクする必要があります。

 

 

7.3 リンクする

 

コンパイル時にライブラリを使用する際には、ライブラリをリンクするという言い方をします。

ライブラリのリンクには、静的リンクと動的リンクがありますが、詳細については省略します。

ここでは、こういう用語あるということだけ知っておくだけで良いです。

 

 

7.4 Makefile

 

Makefileとは、コンパイルの記述をまとめたファイルで、Makefileを作成しておくと手動入力が楽になります。

また、大規模プログラムだと必ずMakefileがありますので、ファイルの中身を一度は目を通しておくと良いです。

Makefileについてもう少し知りたい場合は、

最小限のMakefileの書き方を解説 - 水瓶座列車」で書いていますので参考にしてみてください。

 

 

7.5 システムコール

 

OSとのやり取りを行う関数のことで、例えばファイル操作やプロセスの作成/終了、

メモリ関連の操作を行う関数などがあります。

例えば、open()関数、close()関数、malloc()関数などがあります。

 

 

8.最後に

 

C言語は、様々なプログラム言語の中でも理解しやすい方だと私は思います。

ただ、他の言語ではライブラリ化されている処理などがなかったりして面倒な部分もありますが、

プログラムを初めて勉強する方には、C言語から始めると他の言語も理解が早まると思います。

 

 

<関連・おすすめ記事>

Linux勉強用の中古パソコンおすすめショップランキング - 水瓶座列車

プログラミングを独学で勉強するためのLinuxパソコン準備手順 - 水瓶座列車

HTML/CSSを独学で勉強するための始め方 - 水瓶座列車

Sambaサーバーの設定手順(Ubuntu18.04)とWindowsからのアクセス方法 - 水瓶座列車

SSHの設定手順(Ubuntu18.04)とWindowsからのアクセス確認手順 - 水瓶座列車

ピボット機能(90度回転)があるパソコンディスプレイのおすすめランキングベスト5 - 水瓶座列