× 無料のユーザー登録をすると学習状況を管理することができるようになります

C言語入門 (全22回)

OSを作るために開発され、多くのプログラミング言語に影響を与えているC言語の基礎について説明していきます。

このレッスンでは gcc 4.1.2 を使用しています。

#01 C言語とはなにか?
1316日前
このレッスンを作るときに参考にさせていただいたサイトを以下にまとめてあります。ざっと動画を見られた後に覗いてみるのも良いかと思います。
http://www.ideaxidea.com/archives/2012/10/how_it_was_made_c_lang.html
#02 はじめてのCプログラム
1199日前
gccはソースコードから実行ファイルを作るコマンドです。簡単な使い方は以下のとおりとなります。

hello.cから実行ファイル(デフォルトだとa.out)を作ります。
gcc hello.c

実行ファイルの名前を指定したい場合は-oオプションで指定してあげます。
gcc -o hello hello.c

その他、使えるオプションについてはマニュアルを参照してみてください。
man gcc
1312日前
ここでは実行ファイルを「hello」ではなく「./hello」と指定していることに注意してください。

「./」は「現在のディレクトリ」という意味で、実行ファイルを実行するには、このように実行ファイルまでのパスを指定する必要があります。

ただし $PATH という環境変数に設定されているディレクトリに実行ファイルが置かれている場合は、ファイル名だけで実行ができます。
1314日前
プログラミング言語には「コンパイラ言語」と「インタプリタ言語」があります。
その違いはソースコードを書いた後に実行ファイルをいったん作るかどうか、にあります。C言語やJavaはコンパイラ言語で、PHPやRubyは実行ファイルを作らずにいきなり実行できるのでインタプリタ言語です。
以前はコンパイラ言語が高速、インタプリタ言語は逐次実行型だったので低速、という違いがありました。ただ、現在では、コンピュータが高性能化してきたので、ほぼ違いがなくなってきました。
こうした歴史的経緯を踏まえて、豆知識的にこれらの用語を知っておくのも良いでしょう。
#03 変数とはなにか?
1317日前
動画でおこなっているように、C言語ではプログラムファイルを修正するたびに、コンパイルし直す必要があります。

ファイルを修正したらコンパイルし直す、ということを忘れないようにしましょう。
#13 変数の有効期限について
1315日前
関数 f() の先頭で「static int a = 0;」と宣言しているので、関数 f() を複数回呼ぶと毎回 a に 0 がセットされるかのように見えますが、static をつけて宣言された変数は、2回目以降はその宣言部分は無視されます。

無視されるのは宣言部分だけなので、以下のように書くと当然毎回変数 a には 0 がセットされ、処理が継続されます。

void f(void) {
  static int a;
  a = 0;
  a++;
  printf("a:%d\n", a);
}
#16 ポインタとメモリ空間 (1)
1311日前
動画中で「int型は4つのメモリ空間を占有する」と説明しましたが、お使いのPCの種類によっては4つではない場合もあります。正確にいくつの空間を占有するかはsizeofという命令で調べることができるので、興味がある方は次のように実行してみましょう。
/* int型が占有するメモリ空間の数が表示されます */
printf("%d\n", sizeof(int));
#17 ポインタとメモリ空間 (2)
1317日前
ポインタの宣言は参考書などによって「int *pa」「int * pa」「int* pa」といった書き方があるようです。
どれでも動作しますが、「int *pa」が一般的かと思います。これは「間接演算子を使ったpaの値(*pa)がint型なので」と覚えると良いかもしれません(個人的にはそれですっきりしました)。
このあたりの議論は以下のサイトも参考にしてみてください。
http://togetter.com/li/185167
#18 ポインタとメモリ空間 (3)
1317日前
OSが64bit環境だった場合は、ポインタ(動画中だと変数 pa )が確保するメモリのサイズは8個分になります。
#19 ポインタでメモリを節約する (1)
1317日前
環境によっては long 型が確保するメモリサイズは 4 個分の場合もあります。