C言語入門

OSを作るために開発され、多くのプログラミング言語に影響を与えているC言語の基礎について説明していきます。
0%
このレッスンはアーカイブされました
このレッスンは視聴可能ですが、質問の受付や内容の更新は終了しております。
#01 C言語とはなにか?
2019年4月3日

今回のレッスンではローカル開発環境を使っています。ローカル開発環境の構築方法は以下をご覧ください。

・ローカル開発環境の構築 [Windows編] (全14回)
http://dotinstall.com/lessons/basic_localdev_win_v2
・ローカル開発環境の構築 [macOS編] (全14回)
http://dotinstall.com/lessons/basic_localdev_mac_v2

2020年12月2日

現在ローカル開発環境のレッスンどおりに環境を構築することができません(レッスン内で利用しているCentOS6が終了したため)。実行環境の代替手段についてはローカル開発環境を構築できないのですが……をご覧ください。

#02 はじめてのCプログラム
2013年9月9日
gccはソースコードから実行ファイルを作るコマンドです。簡単な使い方は以下のとおりとなります。

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

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

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

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

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

ファイルを修正したらコンパイルし直す、ということを忘れないようにしましょう。
#13 変数の有効期限について
2012年10月18日
関数 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)
2013年9月9日
動画中で「int型は4つのメモリ空間を占有する」と説明しましたが、お使いのPCの種類によっては4つではない場合もあります。正確にいくつの空間を占有するかはsizeofという命令で調べることができるので、興味がある方は次のように実行してみましょう。
/* int型が占有するメモリ空間の数が表示されます */
printf("%d\n", sizeof(int));
#17 ポインタとメモリ空間 (2)
2012年10月17日
ポインタの宣言は参考書などによって「int *pa」「int * pa」「int* pa」といった書き方があるようです。
どれでも動作しますが、「int *pa」が一般的かと思います。これは「間接演算子を使ったpaの値(*pa)がint型なので」と覚えると良いかもしれません(個人的にはそれですっきりしました)。
このあたりの議論は以下のサイトも参考にしてみてください。
http://togetter.com/li/185167
#18 ポインタとメモリ空間 (3)
2012年10月17日
OSが64bit環境だった場合は、ポインタ(動画中だと変数 pa )が確保するメモリのサイズは8個分になります。
#19 ポインタでメモリを節約する (1)
2013年9月9日
環境によっては long 型が確保するメモリサイズは 4 個分の場合もあります。