2021年5月1日土曜日

C言語の基礎

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日で終わりました。感謝。
今回はココまで。

0 件のコメント:

コメントを投稿