標準プログラマーズ ライブラリシリーズC言語 配列+ポインタ よくわかる実践学習室

[表紙]C言語 配列+ポインタ よくわかる実践学習室

紙版発売

B5変形判/256ページ

定価2,178円(本体1,980円+税10%)

ISBN 4-7741-1888-5

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

プログラミングするにあたって覚えなければならないことはたくさんあります。文法が身についた後で第一に覚えるべきは,効率のよいプログラミング技法です。配列が,その代表的な項目になります。配列に似ているポインタも,いっしょに覚えてしまいましょう。本書は,実験を通してこれらのことをマスターするための第二の入門書です。文章の読みやすさも特筆もの!

こんな方におすすめ

  • C言語の文法をマスターした方
  • 配列やポインタの理解に自信のない方
  • C言語を使った実際の開発に携わっている方

著者の一言

「ポインタと配列は別のもの」と思いがちですが,実は「似たもの同士」です。ポインタが理解できないという人は,まずは配列を徹底的に学習しましょう。宣言した配列がメモリ上にどう確保されるか,配列の要素にアクセスするときに注意すべき点はどこか,配列の [ ]に書く数字にはどんな意味があるのか――。配列やポインタに関するさまざまな疑問を,この本では実験(プログラミング)・考察することで解決します。

目次

chapter1 配列の基本をおさえよう

  • 1-1配列ってなんだっけ?
    • 1-1-1配列を使わなくてもプログラムは作れる
    • 1-1-2配列を使うと便利になることがある
    • 1-1-3配列にできるデータとできないデータ
    • 1-1-4要素数は定数で指定する
    • 1-1-5#defineを使うと便利
  • 1-2メモリの中をのぞいてみよう
    • 1-2-1配列はメモリ上に連続して確保される
    • 1-2-2配列のサイズ=データ型のサイズ×要素数
  • 1-3配列の中身
    • 1-3-1宣言した直後の配列にはゴミが入っている
    • 1-3-2宣言と同時に0で初期化されることもある
    • 1-3-3メモリの中をのぞいてみよう
    • 1-3-4宣言と同時に初期値を代入することもできる
    • 1-3-5配列の要素数=配列のサイズ÷データ型のサイズ
    • 1-3-6宣言した要素数よりも初期値が多いとエラーになる
    • 1-3-7宣言した要素数よりも初期値が少ないと,残りは0で初期化される
    • 1-3-8配列を0で初期化する方法
    • 1-3-9配列を100で初期化する方法

chapter2 配列を使いこなそう

  • 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同じ配列内で順番を逆にする方法
  • 2-3配列を使ってこんなことができる
    • 2-3-1ありえない値を利用して,配列の終わりを表す方法
    • 2-3-2最大値を調べる方法
    • 2-3-3最小値を調べる方法
    • 2-3-4昇順に並べ替える方法
    • 2-3-5降順に並べ替える方法

chapter3 二次元配列を利用しよう

  • 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列数がわかれば初期値は代入できる
    • 3-2-5行数=全要素数÷列数
    • 3-2-6行数よりも初期値が少ないと,残りは0で初期化される
    • 3-2-7列数よりも初期値が少ないと,残りは0で初期化される
    • 3-2-8二次元配列を0で初期化する方法
    • 3-2-9要素数よりも初期値が多いとエラーになる
    • 3-2-10要素数と初期値の区切りが異なるとエラーになる
  • 3-3二次元配列を操作する
    • 3-3-1二次元配列全体にアクセスする方法
    • 3-3-2表と同じイメージで配列の内容を表示する方法
    • 3-3-3アクセスする順序で処理速度が変わる
  • 3-4表計算にチャレンジ
    • 3-4-1行を使って計算する方法
    • 3-4-2列を使って計算する方法
    • 3-4-3行と列を入れ替える方法(その1:別の配列を利用する)
    • 3-4-4行と列を入れ替える方法(その2:同じ配列内で入れ替える)
    • 3-4-5二次元配列を並べ替える方法

chapter4 配列とポインタ

  • 4-1ポインタってなんだっけ?
    • 4-1-1ポインタはアドレスを扱う変数
    • 4-1-2ポインタの仕事は,他の変数の値を間接的に参照すること
    • 4-1-3ポインタを使って他の変数の値を更新する方法
    • 4-1-4「ポインタ+1」はアドレスを1つ進める処理をする
    • 4-1-5ポインタ+1で進む大きさは,データ型で決まる
  • 4-2配列名とポインタ
    • 4-2-1ポインタを使って配列の要素を参照する方法
    • 4-2-2配列名は配列の先頭アドレスを表す「定数」だ
    • 4-2-3配列名でもポインタ演算と同じことができる
    • 4-2-4配列とポインタ,どちらがわかりやすいか

chapter5 配列と文字列

  • 5-1文字列の基本をおさえよう
    • 5-1-1「A 」に1を足したら「B 」になる
    • 5-1-2文字列はchar型の配列で表現する
    • 5-1-3文字列の最後にはヌル文字が必要
    • 5-1-4ヌル文字が文字列の終わりを表す
    • 5-1-5宣言と同時に初期値を代入することもできる
    • 5-1-6文字数と文字配列長では意味が違う
    • 5-1-7文字列定数で初期化することもできる
    • 5-1-8strcpy関数を使って,char型配列に文字列を代入する方法
    • 5-1-9scanf関数を使って,char型配列に文字列を代入する方法
    • 5-1-10全角文字は1文字当たり2バイト使用する
    • 5-1-11全角文字は1文字でも文字列として扱う
    • 5-1-12char型の配列に全角文字を代入する方法
  • 5-2文字列とポインタ
    • 5-2-1文字列を扱うもう1つの方法
    • 5-2-2ポインタ変数も配列と同じように扱える
    • 5-2-3char str[] = "Happy";とchar *p_str = "Happy";の違い
    • 5-2-4文字列の配列は,二次元配列になる
    • 5-2-5メモリの中をのぞいてみよう
    • 5-2-6ポインタを使って文字列の配列を作成する

chapter6 関数を利用しよう

  • 6-1配列渡しの基本をおさえよう
    • 6-1-1関数ってなんだっけ?
    • 6-1-2配列は添え字演算子を付けて受け取る
    • 6-1-3関数には配列の先頭アドレスが渡される
    • 6-1-4関数で配列の内容を変更すると,呼び出し元にも影響する
    • 6-1-5関数は受け取った要素数を調べられない
    • 6-1-6配列を渡す方法(その1:要素数を別に渡す)
    • 6-1-7配列を渡す方法(その2:ありえない値を配列の終端にする)
    • 6-1-8文字列を渡すときは,ポインタを利用する
  • 6-2二次元配列の受け渡し
    • 6-2-1関数に二次元配列を渡す方法
    • 6-2-2列数を間違うと,二次元配列のイメージが変わってしまう

chapter7 ファイルを利用しよう

  • 7-1ファイル入出力の基本をおさえよう
    • 7-1-1基本はファイルオープン・処理・ファイルクローズ
    • 7-1-216進ダンプを表示する方法(その1:1バイトずつ読み込む)
    • 7-1-316進ダンプを表示する方法(その2:16バイトずつ読み込む)
    • 7-1-4C言語とWindowsのファイルでは,行末の表現方法が異なる
  • 7-2テキストファイルの入出力
    • 7-2-1fscanf関数は空白やタブ,改行コードを
  • データの区切りとして判断する
      • 7-2-2CSV形式のファイルから読み込むときは,
    • strtok関数でデータを切り出す
        • 7-2-3表形式のデータを読み込むときは,
      • 列の数をあらかじめ調べておくこと
      • 7-3バイナリーファイルの入出力
        • 7-3-1バイナリーファイルってなんだっけ?
        • 7-3-2バイナリーファイルは一度に大量のデータを入出力できる
        • 7-3-3データサイズを間違うと,正しく入出力できない

      chapter8 もっと配列を利用しよう

      • 8-1構造体も配列にできる
        • 8-1-1構造体ってなんだっけ?
        • 8-1-2構造体の配列を使って,表計算ができる
      • 8-2二次元配列も一次元配列で表現できる
        • 8-2-1二次元配列は,一次元配列を配列にしたもの
        • 8-2-2二次元配列のインデックス=一次元配列のインデックス÷列数
      • 8-3二次元以上の配列もある
        • 8-3-1二次元配列の配列が三次元配列になる
        • 8-3-2初期値を代入するときは,奥行きの個数を省略できる
        • 8-3-3for文のネストの順番で処理速度が変わる
      • 8-4画像データも配列で処理できる
        • 8-4-1ビットマップってなんだろう?
        • 8-4-2ピクセルデータは三次元配列を使って管理する
        • 8-4-3ビットマップを作成する方法
        • 8-4-4ビットマップを読み込む方法
        • 8-4-5ビットマップを上下に反転する方法