書籍概要

本格入門

C言語本格入門
~基礎知識からコンピュータの本質まで

著者
発売日
更新日

概要

現場の最前線で開発をしている著者が,C言語の基本から応用までを豊富なサンプルとともに丁寧に解説。入門書では軽視されがちなプリプロセッサ,ライブラリなどや,つまづきやすい「ポインタと配列」も手厚くカバー。ネットワークプログラミングやオープンソースの読み方など,長年の経験に裏打ちされた知識を伝授します。gccの利用を想定し,大規模開発にも対応できるMakeを使った実行方法をとっているので,実践的な力が身につきます。

こんな方におすすめ

  • 研修や入門書で輪郭はなぞったものの,手が動かないC言語プログラマ
  • なんらかのプログラミング言語は使ったことがあるがC言語は未経験のプログラマ

目次

Chapter 1 イントロダクション

  • 1-1 C言語とは
  • 1-2 C言語につまづかないこつ
  • 1-3 開発者ツールを準備する
  • 1-4 C言語の開発者ツールの役割
  • 1-5 はじめる前に押さえておきたい基本的事項

Chapter 2 データを識別して保持する

  • 2-1 データ型の基本
  • 2-2 データ型を指定して変数を宣言する
  • 2-3 文字と文字列
  • 2-4 記憶クラス
  • 2-5 キャスト

Chapter 3 データを加工して評価する

  • 3-1 式と演算子
  • 3-2 条件式
  • 3-3 単項演算子と三項演算子
  • 3-4 少し変わった演算子

Chapter 4 プログラムの流れを記述する

  • 4-1 制御構造とは
  • 4-2 逐次実行する
  • 4-3 条件ごとに分岐する
  • 4-4 処理を繰り返す
  • 4-5 複数の条件を振り分ける
  • 4-6 任意の場所にジャンプする

Chapter 5 プログラムを機能でまとめる

  • 5-1 関数の基本
  • 5-2 文字列を表示する
  • 5-3 文字列を入力する
  • 5-4 時間を取得する
  • 5-5 乱数を使用する
  • 5-6 標準関数が使えないケース

Chapter 6 さまざまな前処理を行う

  • 6-1 ファイルの内容で置き換える
  • 6-2 1対1で置き換える
  • 6-3 defineしたものを無効にする
  • 6-4 条件でコンパイルする
  • 6-5 関数のようなマクロ関数

Chapter 7 データをまとめて場所を指し示す

  • 7-1 配列とは
  • 7-2 ポインタとは
  • 7-3 ポインタ変数を関数でやりとりする
  • 7-4 ポインタとキャスト
  • 7-5 ダブルポインタ,トリプルポインタ
  • 7-6 特別なポインタ

Chapter 8 異なるデータ型をまとめる

  • 8-1 変数をまとめた構造体
  • 8-2 同じメモリ領域を共用する共用体
  • 8-3 ビット長を指定したフィールドに分けるビットフィールド
  • 8-4 値やデータ型に名前を付ける

Chapter 9 文字列を操作し使いこなす

  • 9-1 文字列を操作する関数
  • 9-2 文字列をコピーする
  • 9-3 文字列の長さを求める
  • 9-4 文字列を連結する
  • 9-5 文字列を比較する
  • 9-6 文字列を検索する
  • 9-6 文字列を切り出す
  • 9-7 文字関数
  • 9-8 複雑な文字列操作をかんたんにする

Chapter 10 動的メモリでデータの置く場所を自ら作る

  • 10-1 動的メモリとは
  • 10-2 メモリを確保する
  • 10-3 メモリを解放する
  • 10-4 メモリのサイズを変更する
  • 10-5 確保したメモリを使う
  • 10-6 メモリ領域を操作する標準関数
  • 10-7 リスト構造

Chapter 11 データを保存して読み出す

  • 11-1 ファイル入出力の基本
  • 11-2 標準ファイル関数
  • 11-3 ファイルの読み書きの例
  • 11-4 その他の標準ファイル関数

Chapter 12 避けて通れない応用

  • 12-1 C言語のお作法
  • 12-2 OSの機能を呼び出すシステムコール
  • 12-3 オープンソースを読んでみよう

Appendix

  • Appendix 1 優先順位表
  • Appendix 2 コンパイラオプション一覧
  • Appendix 3 Makefileの書き方

サポート

ダウンロード

(2018年3月19日更新)

本書で使用している全プロジェクトファイルをダウンロードできます。

データは,ZIP形式の圧縮ファイルです。圧縮ファイルをダウンロードしていただき,適宜解凍してご利用ください。

プロジェクトファイルは,著作権法上の保護を受けています。収録されているファイルの一部,あるいは全部について,いかなる方法においても無断で複写,複製,再配布することは禁じられています。

以上のことをご確認,ご了承の上,データをご利用願います。

ダウンロード
サンプルファイル

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2021年4月20日最終更新)

以下,第2刷以降修正済み

P.94 「暗黙の型変換」8行目

num_1にはちゃんと100という値が格納されて
num_2にはちゃんと100という値が格納されて

P.95 図2-12

誤

正

P.101 リスト3-1 19~32行め


a = 9;
b = 9;
answer = 9 * 9;
printf("%d × %d = %d¥n", a, b, answer);
a = 9;
b = 3;
answer = 9 / 3;
printf("%d / %d = %d¥n", a, b, answer);
a = 9;
b = 2;
answer = 9 % 2;
printf("%d %% %d = %d¥n", a, b, answer);

a = 9;
b = 9;
answer = a * b;
printf("%d × %d = %d¥n", a, b, answer);
a = 9;
b = 3;
answer = a / b;
printf("%d / %d = %d¥n", a, b, answer);
a = 9;
b = 2;
answer = a % b;
printf("%d %% %d = %d¥n", a, b, answer);

P.126 3行め


sizeof 9223372036854780000

sizeof 9223372036854775807

P.127 「カンマ演算子」

, 演算子は、複数の文を1行で書くためのもので、次のように記述できます。

文1, 文2, 文3;
a = 1 + 1, b = 2 + 2, c = 3 + 3;
 式の値としては、最後の文のものを持ちます。
, 演算子は、複数のを1行で書くためのもので、次のように記述できます。

式1, 式2, 式3;
a = 1 + 1, b = 2 + 2, c = 3 + 3;
 式の値としては、最後ののものを持ちます。

P.250 下から4行目

(10進数で18,446,744,073,709,600,000)
(10進数で18,446,744,073,709,551,615

P.470 表A-1 演算子

() [] -> . ! ~ ++ -- ()キャスト &アドレス * 間接 sizeof
() [] -> . 後置++ 後置-- ! ~ ()キャスト &アドレス * 間接 sizeof 前置++ 前置-- 単項+ 単項-

(以下2018年7月30日更新)

以下,2刷以降で修正済み

P.91


$ ./global


$ ./extern

P.272 func_5.c


if (sum(&num_1, &num_2, &answer) != 0) {


if (sum(&num_1, &num_2, answer) != 0) {


(以下2018年3月16日更新)

以下,第2刷以降修正済み

P.60 表2-2

誤

正

画像をクリックすると大きく表示できます。


(2018年3月13日更新)

以下,第2刷以降修正済み

P.55 図2-2

誤

正

画像をクリックすると大きく表示できます。

補足情報

MinGWのインストール方法

(2021年4月20日更新)

本書で紹介しているgnupackは大変便利ですが,Windows 10には正式対応しておりません。Windowsをお使いの方は,2021年現在MinGWの利用をお勧めします。 MinGWのインストール手順をまとめたPDFを下記よりダウンロードし,手順に従って操作を行ってください。

商品一覧