GW 中に、C言語を眺めておこうと考えていました。
英語同様に、辞書があれば読めるものの全く書けない、という状況です。必要に迫られることが少なく、積極的に利用する機会はありませんでした。が、書ける能力があれば楽だったかも、ということは数回ありました。将来?に備えた弱点補強です。
取り急ぎ作りたいモノもないので、いくつかのサイトを見て1週間程度で完了できそうな以下を実施。
一週間で身につくC言語の基本
http://c-lang.sevendays-study.com/index.html
基礎編はほぼ復習になりましたが、応用編は知らないことばかり。あわせてメモしておきましょう。
基礎編
・void とは、関数の戻り値が無いことを意味する。
・Visaul Studio では、セキュリティの関係で scanf を使えない(scanf_s ならOK)。
プロジェクトを右クリック → プロパティ → c/c++ → SDL チェックを「いいえ」に変更
※画面に直接入力する仕様は少ない(が、たまにあると忘れる)のでメモ。
・7日目、ファイル分割の御作法。
#ifndef、#define、#endif マクロの意味、2重インクルードの防止、global 変数に対する extern修飾子。
応用編
2日目 変数のアドレス
・通常の変数:int a 値a アドレス&a
・ポインタ変数:int* p 値*p アドレスp
p = &a: pに、aのアドレスを代入 *pはaと同じものになる
*p = 300: *pに300を代入
3日目 ポインタと配列
・ポインタへのアドレス代入:p1 = &ar1[0]
配列変数 アドレス ポインタ ポインタ変数の値
ar1[0] &ar1[0] p1 *p1
ar1[1] &ar1[1] p1+1 *(p1+1)
・ポインタ変数p1に配列d[3] = { 0.2 , 0.4 , 0.6 }を代入:配列変数dの先頭アドレス&d[0]の値を代入するのと同じ処理
・動的メモリ確保 malloc()~解放 free()を使う場合、stdlib.hをインクルード
5日目 構造体
・構造体の成分の変数「メンバ」:(構造体変数名).(メンバ)
・データ渡し⇒スタック領域の圧迫、データコピー(無駄な処理)発生。⇒ポインタ渡しが通常
初心者がまず躓くといわれているポインタ。shallow・deep copy の関係と似ているようです。概念は理解できましたが、慣れるまでに時間がかかるでしょう。
丁寧な御説明で分かりやすく、2日で終わりました。感謝。
今回はココまで。
2021年5月1日土曜日
C言語の基礎
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿