読書どんな本かC言語の言語仕様について、基礎的な内容を網羅した本。サンプルコードが豊富。実行環境のディストリビューションは限定してないが、Centosは5系での挙動を書いている。gccのバージョンは明記されてない。Linux/Unixの本を読んでいたが、データ型や演算子の理解が曖昧なためCで書かれたサンプルコードをスラスラ読めなかったのが背景。Cは実際にコードを書いたことがあまりないのでサンプルコードの写経を通して学習を進めたい。実際に手を動かすことでCの感覚を掴む読んで大切だと思ったところのメモ2,3,7,8,9章が自分の目的達成には必要だと思ったので、まずは2、3章を読んだ。7、8、9章のメモは後日上げる予定。2章メモリとデータ型メモリは有限な資源。2ビットの値が格納され、32ビット/64ビットの単位でCPUはメモリを扱う。ASCIIコードを利用した場合、半角英数字と記号は256通りが定義されている。通りの0と1の組み合わせがある。0から4,294,967,295までの整数を表すことが可能。整数を表すためには上記のように、32ビット分のメモリを確保することになる。int型で変数宣言すると32ビット分のメモリを確保し、char型で変数宣言すると8ビット分のメモリを確保することになる。メモリは有限な資源なので、資源の使用効率を高めるために、C言語では変数宣言をする際は型宣言を行う。負の数は補数で表すが、コンパイラはそのままだとビット列が表すのが正の整数なの補数なのか判別できない。データ型を用いることでコンパイラに指示をする必要がある。ソースコードのビルドCで書いたソースコードは、まずプリプロセッサによるプリプロセスがなされ、前処理されたソースへと加工される。前処理されたソースは、コンパイラに渡されてコンパイルされ、アセンプリ言語のソースとなる。アセンプリ言語のソースはアセンブラに渡されてアセンブルされ、機械語のファイルとなる。機械語のファイルはリンカによって他のライブラリなどとリンクされ、実行ファイルになる。このコンパイル、アセンブル、リンクによる実行ファイルの作成という一連の作業を「ビルド」と呼ぶCではビルドを行うにはmakeコマンドを用いる文字と文字列1文字を表すには8ビット必要であり、8ビットをメモリ上に確保するデータ型がchar。world"のように複数の文字(文字列)を表示するには、charの配列を用いて表現するCにおいては配列とは、同じデータ型の変数を連続して並べたものというイメージ文字列を表現する際は、配列の最後の要素を\0という値にしなければならない。この値は文字列の終端を意味する。char型の変数には数値を入れることで、ASCIIに対応した文字とのマッピングができる。ASCIIの数字と文字列とのマッピング表を覚えて数値を入力するのは面倒なので、Cでは文字をシングルコーテーション''で囲うことで文字を数値へと変換している。'h'は104という数値へと変換される。ダブルコーテーション""で文字を囲うことで、char型の配列として扱えるので通常はこちらを使う。ダブルコーテーションで文字を囲うと、文字列定数として扱われる。一度宣言してしまった配列に値を代入したいときは、それぞれの要素を一つずつ指定しなければならない。配列の初期化を行えば要素を指定せずとも文字列を代入できるCでは関数においては、charやintなど普通の変数については、そのまま変数に格納した値をやり取りする。一方で配列や文字列のような大きな情報については、情報が格納されているメモリ領域の先頭アドレスだけでやりとりを行う。記憶クラス関数の中で宣言した配列は、スタック上に保管される。関数の処理を終了した時点で、そのスタック上の空間は他の処理に使われてしまい内容が破壊される。破壊されないようにするには、スタック以外の領域に変数(メモリ領域)を確保する必要がある関数内の変数宣言時に先頭にstaticをつけることで、静的変数として変数をスタックとは別の領域に確保できる。静的変数はあくまでローカル変数であり、グローバル変数ではない。関数の外で宣言するのがグローバル変数。extern指定子を使うことで、別ファイルに宣言してある変数や関数を利用できるようになる。演算と演算子sizeofは演算子ビット演算は1ビットごとを対象にして演算を行うため、繰り上がりが発生しない繰り上がりはないが、桁だけをずらすビット演算もあるビット演算を用いることで論理積の演算ができる。7、8、9章(文字列と配列、ポインタ、文字列操作)を読んで理解を深めたい論理積の記述はLinuxの本を読んでピンとこなかった部分だったが、本書のIPアドレスを例にした解説が分かりやすく理解が進んだ。ウォーミングアップは済んだので、本丸の7、8、9章をこのまま攻略して難所を理解したい。『Unix/Linuxプログラミング理論と実践』1章から4章まで読んだ。個人的に気になったところを抜粋。Rubyのメソッドはいったいどのような要素で構成され...2019-12-151年目Webエンジニアが2019年に読んだ本37冊を振返ります2019年2月1日にWebエンジニアに転職した@dimn_zkymです。ruby』ターミナルに過去打ち込んだコマンドをcronで自動記録してみた1年目Webエンジニアが2019年に読んだ本37冊を振返ります月別アーカイブはてなブログをはじめよう!dimn_zkymさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。