C言語の基礎知識

ハードウェアやOS、組み込み機器向けのプログラミング言語で、C++やC#をはじめJavaなどさまざまなに影響を与えたC言語。ついに機会を得たので学んだことについてまとめていきたいと思います。


C言語とは

  1. ・ コンパイルが必要
  2. ・ メモリ管理が必要
  3. ・ 処理速度が速い

文法は複雑ではありませんが、用意されている関数が他の言語と比べ少ないため自分で考えて書かなければならず記述が多くなる傾向にあります。またメモリの管理やポインタの指定もプログラム初心者の学習のハードルを上げていると感じました。

 


開発環境 (Mac)

コンパイルが必要ですが、手軽にターミナルでも開発や実行が可能です。コマンドライン操作に慣れていない場合はMacのXcodeをエディタ&コンパイラとして使うこともできます。WindowsだとMicrosoft Visual Studioが使えるそうですが、私がMacユーザーなので詳しくは省略します。

▼ ターミナル + Vim

1. コードを書く
vimなどのエディタでmain.cというファイルを作り、下記のコードを書いて保存します。


#include <stdio.h>
int main() {
    printf("Hello, World\n");
    return 0;
}

2. 実行ファイルの作成
ターミナル上でgccの後に半角スペース、コンパイルしたいファイル名を続けます。成功するとa.outというファイルがフォルダ内に作成されているはずです。


$ gcc main.c

例えば、ヘッダファイルなど紐づけられたファイルがある場合は一緒にコンパイルします。


$ gcc header.c main.c

もしくはコンパイル後のファイルの名前を指定したい場合は-oを使い、その後に名前を指定します。下記の場合、mainという拡張子なしのファイルが作成されるはずです。


$ gcc -o main main.c

3. ファイルの実行
コンパイルで生成されたファイルを./の後にスペースなしで続け、エンターキーを押してください。成功すれば「Hello World」と表示されます。


$ ./a.out

 

▼ Xcode

1. 新規プロジェクト作成
ファイル > 新規 > プロジェクト > macOS > コマンドラインツール (ショートカットキーはシフト + コマンド + N)で新規コマンドラインプロジェクトを作り、言語でCを選択します。

2. ファイルの実行
main.cにコードを書いたら、左上にある「▶︎」ボタンを押して実行できます。ショートカットキーはコマンド + Rです。

 


主な文法

書き方は他の言語と共通点が多いため、混乱することは少ないと思います。Javaと同じく変数や配列の定義はデータ型の指定が必要です。モダンな言語との大きな違いはメモリ管理のために値を使用する際はポインタを指定する点や、配列の個数を調べるメソッドや文字列を扱う便利な変数が用意されていないなどがあります。

▼ 変数

変数の型 変数名 = 値;


int a = 3;

▼ 配列

配列の型 配列名[] = {値, 値, 値, …, 値};


int a = {3, 1, 4, 5};

▼ 値の表示

printf(文字フォーマット, 値);
※ %dはint型をプリントするためのフォーマット。その他%cや%ld、%pなどがあります。


printf("%d", 1 + 2);


3

▼ 条件分岐

if (条件式1) {
条件式1が成立するときの処理
} else if (条件式2) {
条件式2が成立するときの処理
} else {
いずれの条件式も成立しないときの処理
}


int a = 3;
if (a == 1) {
    printf("aは1です。");
} else if (a == 2) {
    printf("aは2です。");
} else {
    printf("aは1でも2でもありません。");
}


aは1でも2でもありません。

▼ 繰り返し

for (int i = 0; i < 繰り返し回数; i++) {
繰り返したい処理
}


for (int i = 0; i &lt; 10; i++) {
    printf("%d", i);
}


0123456789

▼ コメント

コメントは実際のコードで無視されます。


// 1行コメント

/*
複数行コメント
*/

▼ 拡張表記 (エスケープ シーケンス)

改行をプリントで使いたい場合は\n、タブは\t、%は%%などを使います。


printf("Hello\nWorld");


Hello
World

 


感想

初心者が基本的な四則演算や条件分岐、コメントの書き方を学んだり、他のプログラミング言語を知っている人が基礎的なことを学習する分には問題ないと思いました。しかし複雑なものを作ろうとすると処理を自分で書かなければならないし、アウトプットもGUIではないため達成感を実感しづらいというところで、プログラミング初心者が本格的に学習するにはおすすめできない気がします…。ですが現在主流の言語の元になっているため、一度学んでみると他の言語の理解が深まります。
 


参考

 

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA