# 初心者のためのポイント学習C言語 ## 進め方 - 50分くらいまで交代で読み進める - 5分で気づきや感想を書く。 - 感想・気づきの発表 ## フォーマット ``` ## 🗓 第〇回 2024-08- ### 参考資料 URL: ### 📙 読んだところ - 〇章 「」 - 〇章 「」 ### 📝 疑問点や気づき、学んだこと - Norisuke - @foo - 仕事人わたる - @bar ### 感想・今の気分などなど(ANYTHING IS OK!) - Norisuke - - 仕事人わたる - ``` ## 🗓 第11回 2024-08-25 ### 参考資料 URL: ### 📙 読んだところ - 構造体の宿題 ### 📝 疑問点や気づき、学んだこと - Norisuke - 宿題出来てた。考え方は間違っていなかったので嬉しい🥰 - 型変換を明示的に使えるようになった。 - 次回の出題範囲を復習する。 - 仕事人わたる - 次回の試験範囲について掲示。 ### 感想・今の気分などなど(ANYTHING IS OK!) - Norisuke - 二次元配列やカウンタの複数あるループ処理に対する苦手意識を克服したい。 - 仕事人わたる - 試験問題を作ってくる。 - そこまで難易度の高い問題は作らず、今まで知識で溶けるレベルのものを作成予定。 ## 🗓 第10回 2024-08-17 ### 参考資料 URL: http://www9.plala.or.jp/sgwr-t/c/sec15-3.html ### 📙 読んだところ - 15章-3 「構造体配列のポインタ表現」 ### 📝 疑問点や気づき、学んだこと - Norisuke - `typedef`は型に対して名前を付けること。 - - 仕事人わたる - @bar ### 感想・今の気分などなど(ANYTHING IS OK!) - Norisuke - 構造体の宿題をやって身に着ける。テストに向けて振り返りも行う。 - 仕事人わたる - 来週(2024/08/24)までに試験範囲の抽出。 - 再来週(2024/09/01)に試験実施の予定。 ## 🗓 第9回 2024-08-10 ### 参考資料 URL: http://www9.plala.or.jp/sgwr-t/c/sec15.html ### 📙 読んだところ - 15章 「構造体」 ### 📝 疑問点や気づき、学んだこと - Norisuke - 関数の引数は値・アドレスの2つを持つことが出来る。 - `構造体変数名. メンバ名`とすることで構造体変数の参照が出来る。 - 仕事人わたる - @bar ### 感想・今の気分などなど(ANYTHING IS OK!) - Norisuke - 構造体楽しそう! - 仕事人わたる - ## 🗓 第8回 2024-07-20 ### 参考資料 URL: http://www9.plala.or.jp/sgwr-t/c/sec12.html ### 📙 読んだところ - 12章 「記憶クラス」 ### 📝 疑問点や気づき、学んだこと - Norisuke - ローカル変数は関数内でのみ使える変数。 - グローバル変数は関数外で定義して、ローカル内でも使える変数。 - 静的変数は、ファイル内のみで使用可能の変数。 - データの正の値のみを使うことを宣言する修飾は`unsigned` - 仕事人わたる - スタック領域/ヒープ領域の説明が難しい! - ITパスポートの取得を目指してみたいなぁ。 ### 感想・今の気分などなど(ANYTHING IS OK!) - Norisuke - 就職活動とバイト並行で頑張ろう🥹 - 仕事人わたる - ブルートゥースヘッドホンの調子が悪い。。。 - 🗓 第7回 2024-07-06 ### 参考資料 URL: http://www9.plala.or.jp/sgwr-t/c/sec11.html ### 📙 読んだところ - 11章 「関数」 ### 📝 疑問点や気づき、学んだこと - Norisuke - 自分で作った関数は「プロトタイプ宣言」をすることが必要。プロトタイプ宣言は、"型・関数名・パラメータ"の3つの情報が必要。 - `#include "関数名"`とする。 - 仕事人わたる - include の<>はコンパイラも識別するらしい。 - おそらく、includeする際のパス指定がOS管理配下のディレクトリを探すことになっていると思われる。 ### 感想・今の気分などなど(ANYTHING IS OK!) - Norisuke - ポインタの復習。pは配列の頭のアドレスが入る。"文字(文字列でない)"はASCIIコード(87,12など)で管理されている。 - 関数の宿題やる。 - 仕事人わたる - 🗓 第6回 2024-06-08 ### 参考資料 URL: http://www9.plala.or.jp/sgwr-t/index.html ### 📙 読んだところ - 10章 「ポインタ3」 - 18章 「プリプロセッサ」 ### 📝 疑問点や気づき、学んだこと - Norisuke - 文字列リテラルは定数のようなもの。人間がコードを読む時の理解を助ける。 - ポインタのポインタは、今まで考え方は同じ。変数のアドレスなどを見失いやすそうなので注意が必要。 - プリプロセッサはコンパイル前に行われる処理の総称。 - 仕事人わたる - ポインタのポインタは何重にもポインタ定義可能だが、非常に非常に可読性が悪くなるので、可能な限り複数ポインタ重ねを行わないようなプログラム設計が必要 - ### 感想・今の気分などなど(ANYTHING IS OK!) - Norisuke - ポインタ10-3,10-4の課題。 - 仕事人わたる - ポインタの理解が早くて助かります! - ``` 🗓 第5回 2024-06-01 ### 参考資料 URL: http://www9.plala.or.jp/sgwr-t/c/sec10-2.html ### 📙 読んだところ - 10章 「ポインタ2」 - 9章 「2次元配列」 ### 📝 疑問点や気づき、学んだこと - Norisuke - ポインタで配列を指定する場合は"配列名のみ"もしくは、"&配列名[インデックス番号]"とする。前者の方が一般的。 - 変数pの中身、ポインタpの中身を把握できるようにする。 - pの中身が今どこにいるのか、そのpに対して相対的な処理を行うことが主流。 - 仕事人わたる - ポインタは、今どこのアドレスを保持しているかを意識することが重要! どこの位置にいるかさえ分かれば、* で箱の中身にアクセスするだけ。 - 配列の先頭アドレスを取得したい場合は、char *p = 配列名; で取得可能。 ### 感想・今の気分などなど(ANYTHING IS OK!) - Norisuke - - 仕事人わたる - 🗓 第4回 2024-05-18 ### 参考資料 URL: http://www9.plala.or.jp/sgwr-t/c/sec10.html ### 📙 読んだところ - 10章 「ポインタ」 ### 📝 疑問点や気づき、学んだこと - Norisuke - 1. 変数は箱のようなもの。データが入っている。 - 2. ポインタは変数の住所が入っている変数。 - 3. ` int* pValue = &value[0];`のようにすることで変数の中身を変更可能。 - 仕事人わたる - ポインタとはあくまで変数の型の一種である。 int 型の変数のアドレスを格納するのは int* 型 char 型の変数のアドレスを格納するのは char* 型 - 変数のアドレスは &(アンパサンド)を指定すると取得可能! - アドレスで指定された中身を設定/参照する際には、 ポインタ型の変数に *をつけることでアクセス可能! 例)int* pValue = &value; *pValue = 3; - 配列を宣言するとパソコンのメモリ上に、連続した領域が確保される。 例) value[4] のように宣言すると。。。 value[0] の address=0x7ffe90312e14 value[1] の address=0x7ffe90312e18 value[2] の address=0x7ffe90312e1c value[3] の address=0x7ffe90312e20 ※1:アドレスの確保される領域は実行環境によってまちまち ※2:この例ではint型の配列を確保しているので、4バイトずつアドレスの値が進んでいる。 - ポインタ型の変数のアドレスを進める際は、pValue++; のようにすること。 ### 感想・今の気分などなど(ANYTHING IS OK!) - Norisuke - ポインタ演習問題10-1 - ポインタは想像通り難しいと感じることもあるけど、まったく分からない感じでは無い。理解を深めてものにしたい! - 仕事人わたる - ## 🗓 第3回 2024-05-04 ### 参考資料 URL: http://www9.plala.or.jp/sgwr-t/index.html ### 📙 読んだところ - 7章 「標準ライブラリ関数」 - 8章 「標準入出力関数2」 - 9章 「2次元配列」 ### 📝 疑問点や気づき、学んだこと - Norisuke - 文字列を別の方に変換するメソッドやコピーするメソッドなどrubyにも通ずるものを感じた。 - 2次元配列の並び難しい。ポインタですべて解決するらしい。 - ポインタは相対的な住所のようなもの。 - 仕事人わたる - 疑似乱数生成関数のrand()を使用する際には、シード値から疑似乱数を変更するsrand()関数の使用が必須。srand()のシード値には時刻を指定することが多い。 ### 感想・今の気分などなど(ANYTHING IS OK!) - Norisuke - 演習問題の残りをやる。ゲームばかりしない。 - ポインタは難しそうなので一度目を通す。所要時間は10分だけでもいいので。 - 仕事人わたる - 次回は「ポインタ」から! - 課題は下記の通り - 6-5 switch文 - 7-1 文字列処理関数 - 7-4 一般ユーティリティ関数 - 9-1 2次元配列 ## 🗓 第2回 2024-04-27 ### 参考資料 URL: http://www9.plala.or.jp/sgwr-t/index.html ### 📙 読んだところ - 3章 「演算子」 - 4章 「型変換」 - 5章 「標準入出力」 ### 📝 疑問点や気づき、学んだこと - Norisuke - 比較演算子や論理演算子は基本的にはrubyと同じ。ただインクリメント・デクリメントはrubyにはないので覚える。 - 型変換(キャスト)の優先順位がある。 - scanfは危険なのでscanf_sを使う。 - 仕事人わたる - Rubyにはインクリメント/デクリメント演算子がないらしい。 ### 感想・今の気分などなど(ANYTHING IS OK!) - Norisuke - ポインタが一番の課題らしい。一回目を通しておく。 - 仕事人わたる - Ubuntu日本語入力できるようにしておくか。。。 - 次回は第6章から # 🗓 第1回 2024-04-13 ### 参考資料 URL: ### 📙 読んだところ - 1章 「はじめに」 - 2章 「データの扱い」 ### 📝 疑問点や気づき、学んだこと - Norisuke - コンパイラとは、文法チェックのようなもの。 - リンカーはライブラリを参照する、繋がるためのもの。 - 変数や定数の中身は**絶対に初期化する** - 各文字にはASCIIコードの番号が割り振られている。 - 文字列の最後に0を付けることで終端を示す。 - 仕事人わたる - 下記内容まで完了 - 仮想環境の構築手順 - 第1章~第2章 - ビルド/実行手順 1. gcc ファイル名.c コマンドには様々なオプションが付与可能。 例(gcc -Wall -WExtra ファイル名.c) 特定のwarningを無効化したりもできたりする。 2. ./実行ファイル名.out ### 感想・今の気分などなど(ANYTHING IS OK!) - Norisuke - 次回までに例題を解く。 - rubyがC言語で書かれているので、rubyで使わている予約語や仕様などに同じものがあって親しみやすかった。 - 基礎の復習をして定着させる。ツェズゲラも後悔してた。 - ![image](https://hackmd.io/_uploads/Sk7NzvDxC.png) - 仕事人わたる - 次回は第3章から開始