c言語学習7日目
今日も進捗報告をさせていただきます。
c言語の学習を始めて今日でちょうど一週間になりました。
ここで改めて、学習の目的をはっきりさせておこうと思います。
目標:
c言語の基本的な文法を理解し、自分である程度のプログラムが書けるようにする(研究のための道具の使い方を学ぶ)。
高速に処理されるプログラムが書けるようになりたい。
→c言語の知識を流体シミュレーションに生かしたい。
目標までの道筋:
・「cプログラミング入門以前」→コンピュータの基本的な知識を養う
・「cの絵本」→c言語の基本的な文法を理解する
・「苦しんで覚えるc言語」→cの絵本で足りないなと思ったところを補填する、基礎文法の全体把握
・「新・明解c言語入門編」→苦Cで分からなかったところの解釈、cプログラミングの練習問題を解く
・研究を少し始めてみる
→研究で必要なc言語文法の把握、必要な熱流体関係の専門知識の把握をする(理解しようとすると自分だけでは限界がありそう)
・フロースクエアで流体シミュレーションの雰囲気を掴む
現状:
・「cプログラミング入門以前」→一周した→理解が足りていないところもありそう
・「cの絵本」→c言語の基本的な文法を理解する→説明不足な部分もあり深い理解は得られていない
・「苦しんで覚えるc言語」→ポインタ学習中
このような感じで、目標、目標までの道筋、現状を書いてみました。改めて可視化しておくことで、PDCAサイクルが回しやすくなると思います。あとは実行するだけです!!
今日は本格的にポインタの学習に入りました。
研究で扱うかは分かりませんが、c言語では重要な概念らしいのでとりあえずやってみたという感じです。
進捗の詳細:
「苦しんで覚えるc言語」
15章
・ポインタという単語
→ポインタとはアドレスを扱う3つの機能の総称→ポインタ型、ポインタ値、ポインタ変数
・ポインタ変数を実際に使ってみる
・&によるアドレスの代入
・*によるモードの切り替え
→ポインタ変数の使い方は、ショートカットとして使用する
・引数による情報の受け渡し
・ポインタ型の引数
→ポインタ型の引数を使用する場合、2つ以上の情報を返すことが出来る
→戻り値を使う場合、常に1つの情報しか返すことが出来ない
・配列型の引数(→正直理解が難しかった)
→配列型の引数は、
①要素数が完全に無視される
②関数内で配列の値を変えると呼び出し側まで変化する
→関数には配列ではなく配列の一番目の要素のアドレスを渡しており、配列型の仮引数をもつ関数宣言はポインタ変数の宣言になっている。
・配列とポインタの関係
→正直本質がつかめない→もう数回読んでみる必要があるかも
わからないこと:
①「ポインタの本当の使い方は、ショートカットとして使用することです。Windowsのデスクトップに並んでいる、あのショートカットと同じです。ショートカットは、どこか別の場所にあるファイルを指し示すファイルです。ショートカットを開けば、その指し示しているファイルが開かれます。にも関わらず、ショートカットは指し示すファイル自体ではないので、ショートカットはどこにでも自由に作ることが出来ますし、複数個作ったり削除したりしても、指し示すファイルには何の影響もありません。これこそが、まさにポインタの役割そのものです。ポインタ変数に、実際に存在する変数のアドレスを記憶しておけば、そのポインタ変数が使える場所であれば、元の変数が使えない場所であっても、ポインタ変数を通常変数モードに切り替えれば、元の変数と同じく使うことが出来ます。
↓↓↓
Q:そのポインタ変数が使える場所、元の変数が使えない場所はそれぞれどこなのか???
②動的なメモリ確保とは何か
③ポインタ演算のメリットは何か
感想:
正直なところ、今日は分からなかった事が多数あり、また、分かっていないこところが分かっていないという印象を受けた。
まだまだポインタについては学習の余地があるかなと思う。
今日の最大の学びは、関数を使用する時に、ポインタ型の引数を使用することで2つ以上の情報を返すことが出来ることである。又、戻り値を使う場合は常に1つの情報しか返すことが出来ないということである。
今後:
c言語学習で過去に分からなかったことを列挙してみる
→今後の細かい学習方針(手順など)を考えてみる