1992年に発行以来、好評を頂いている『C言語によるプログラミング ―応用編―』を第2版として大幅改訂。文法の基礎事項をはじめ、分割コンパイル、マクロ、関数、ライブラリ、ポインタ、ビット処理、データ構造、ネットワーク、数値解析、ソフトウェア開発手法など、C言語による本格的なプログラミングテクニックの基礎知識を1冊に凝縮。実践的なプログラミングに役立つさまざまなノウハウや注意点を、豊富なサンプルプログラムを紹介しながら解説します。
https://www.ohmsha.co.jp/book/9784274064876/
正誤表やDLデータ等がある場合はこちらに掲載しています
1章 C言語の基礎
2章 分割コンパイルとマクロ
3章 さまざまな関数とライブラリ
4章 ポインタ
5章 ビット処理
6章 アルゴリズムとデータ構造
7章 ネットワークプログラミング
8章 数値解析
9章 本格的なプログラミング
付録
付録1. デバッガの使い方
付録2. ANSI標準ライブラリ一覧
付録3. ANSI(ASCII)コード表
付録4. キーワード(予約語)一覧
付録5. エスケープシーケンス一覧
付録6. 演算子一覧とその優先順位表
1章 C言語の基礎
1.1 はじめに
1.2 制御の流れ
1.3 関 数
1.4 配 列
1.5 構造体
1.6 ポインタ
2章 分割コンパイルとマクロ
2.1 プログラムの作成
2.1.1 プログラムの作成と実行
2.1.2 プリプロセス
2.1.3 コンパイル
2.1.4 リンク
2.2 分割コンパイル
2.2.1 複数ファイルでのプログラム作成
2.2.2 分割コンパイルとは
2.2.3 ファイル分割の目安
2.2.4 makeプログラム
2.3 定義・宣言とその通用範囲
2.3.1 通用範囲の一般的な考え方
2.3.2 関数の通用範囲
2.3.3 変数の通用範囲
2.4 前処理指令
2.4.1 オブジェクト形式マクロ
2.4.2 関数形式マクロ
2.4.3 ファイル取り込み −#include−
2.4.4 条件付き取り込み −#if〜#endif−
2.4.5 組み込みマクロ
3章 さまざまな関数とライブラリ
3.1 再帰関数
3.1.1 再帰関数の動作
3.1.2 再帰の実行メカニズムとスタック
3.1.3 非局所的ジャンプ
3.2 可変引数
3.2.1 引数の渡し方
3.2.2 可変引数をもつ関数の実現方法
3.2.3 引数の値を印刷する関数
3.2.4 独自のprintf関数
3.3 疑似乱数
3.3.1 標準関数を用いた乱数発生
3.3.2 乱数の発生
3.3.3 平均m、標準偏差sの正規乱数
3.4 ライブラリ
3.4.1 ライブラリの概念
3.4.2 ライブラリとリンクの種類
3.4.3 静的リンクと動的リンク
3.4.4 ライブラリの作成方法
3.4.5 インターポジショニング
4章 ポインタ
4.1 メモリの詳細
4.2 さまざまなポインタ
4.2.1 構造体へのポインタ
4.2.2 ポインタの配列
4.2.3 関数へのポインタ
4.2.4 配列へのポインタ
4.2.5 ポインタのポインタ
4.2.6 派生型
4.3 動的メモリ領域の確保
4.4 コマンドラインからのパラメータの取得
5章 ビット処理
5.1 ビット処理の役割
5.2 ビットごとの演算
5.2.1 ビットごとの論理積
5.2.2 ビットごとの論理和
5.2.3 ビットごとの排他的論理和
5.2.4 ビットごとの論理否定
5.2.5 左シフト
5.2.6 右シフト
5.2.7 算術シフトと論理シフト
5.3 ビットフィールド
5.3.1 ビットフィールドとは
5.4 ビット演算とビットフィールド
5.4.1 フラグのオン/オフ
5.4.2 フラグの検査
5.5 ビット演算の2進演算表示
6章 アルゴリズムとデータ構造
6.1 基本的なデータ構造
6.1.1 リスト
6.1.2 リストの操作
6.1.3 いろいろなリスト
6.1.4 スタック
6.1.5 キュー
6.2 ツリー
6.2.1 2分木の実現
6.2.2 2分木の例
6.3 データの整列
6.3.1 単純な整列法
6.3.2 シェルソート
6.3.3 クイックソート
6.4 データの探索
6.4.1 逐次探索
6.4.2 2分探索
6.4.3 ハッシュ法
7章 ネットワーク プログラミング
7.1 背景
7.2 準備−基本入出力関数によるバイナリファイルの読み書き
7.2.1 基本入出力関数
7.2.2 構造体データの読み書き−ストップウォッチの作成を通して
7.3 ネットワークの概念
7.3.1 クライアントとサーバ
7.3.2 クライアント側の手続き
7.3.3 サーバ側の手続き
7.4 クライアント側インタフェース
7.4.1 初期化処理
7.4.2 書き込み処理
7.4.3 読み込み処理
7.4.4 パケットの概念
7.4.5 終了処理
7.5 クライアントプログラムの例−WWWクライアント
7.5.1 WWWクライアントの実装
7.5.2 WWWクライアントの実行
7.6 サーバ側インタフェース
7.6.1 クライアントからの接続要求の受信
7.7 サーバプログラムの例−簡易WWWサーバの作成
7.7.1 モジュール分割
7.7.2 各モジュールの実装
7.7.3 簡易WWWサーバの実行
7.7.4 マルチクライアントサーバへの改良
8章 数値解析
8.1 データ型の最大値と最小値
8.2 計算誤差
8.2.1 丸め誤差と計算機ε(イプシロン)
8.2.2 桁落ち
8.2.3 情報落ち
8.2.4 積み残し
8.2.5 計算誤差の起こる例(2次方程式の根を求める)
8.3 連立一次方程式と行列計算
8.3.1 連立方程式の解法(ガウス・ジョルダン法)
8.3.2 部分選択を用いたガウス・ジョルダン法
8.3.3 連立方程式の解法2(ガウス法)
8.3.4 行列の三角分解(LU法)
8.3.5 行列式を求める
9章 本格的なプログラミング
9.1 ソフトウェア開発の実際
9.1.1 ソフトウェアとは
9.1.2 ソフトウェアライフサイクル
9.1.3 開発モデル
9.1.4 ウォーターフォールモデル
9.1.5 プロトタイプモデルとウォーターフォールモデル
9.1.6 プロジェクトチーム
9.2 よいプログラムを作るために
9.2.1 よいソフトウェアの考え方
9.2.2 モジュラプログラミング
9.2.3 モジュール分割の方法
9.2.4 モジュール分割の観点
9.3 プログラミングのヒント
9.3.1 わかりやすいプログラムを書く工夫
9.3.2 修正しやすいプログラムを書く工夫
9.3.3 効率のよいプログラムを書く工夫
9.3.4 移植性のよいプログラムを書く工夫
9.3.5 頑丈なプログラムを書く工夫
9.3.6 デバッグの方法
9.4 まとめ
付 録
付録1. デバッガの使い方
付録2. ANSI標準ライブラリ一覧
付録3. ANSI(ASCII)コード表
付録4. キーワード(予約語)一覧
付録5. エスケープシーケンス一覧
付録6. 演算子一覧とその優先順位表