不惑にしてまだ何者でもない者のブログ

Arduino関連、Raspberry Pi関連、プログラミング学習

paizaラーニング『言語入門編5: ポインタについて理解しよう (全8回) 』を受講してみた

2021-02-04 23:07:28 | paiza

『言語入門編5: ポインタについて理解しよう (全8回) 』


メモ

#01:ポインタとは何かを学ぼう

  • ポインタとは:データそのものではなく、データがある場所を指し示すもの
    • C 言語では、ポインタは「アドレス」になっている

#03:配列に対してポインタを使ってみよう

  • ポインタ型の変数の宣言
    int へのポインタ型の変数 p1 は
    int *p1;
  • ポインタ型の変数にアドレスを代入する
    • 変数名の前に & (アンド)をつけると、その変数のアドレスを取得できる。
      p1 = &(変数名);
    • 配列の要素も指定できる。
      p1 = &data[2];
  • ポインタの先の値を書き換える
    p1 = &(変数名);

#08:malloc について理解しよう

  • malloc :プログラム実行時に領域を確保することができる。
    • 領域の大きさは、「sizeof(型名) * 要素数」 で指定する。
    • malloc で返される値は、確保された領域の先頭のアドレス。
      (ただし、領域の確保に失敗したときには NULL が返される)
    • ※より厳密なプログラムを作成するときは、malloc で返された値が NULL であるかどうかを判定する必要がある。
  • free:malloc で確保された領域は、free で解放することができる
    • ※free によって領域が解放されたあとも、ポインタの値はそのままになる。そのようなポインタには NULL を代入しておくことが推奨される。

認定証

やっぱりポインタとかmallocの部分で何度やってもすんなり入って来ないな😖 
結局どんどん使って慣れるしかないんだよな。


学習ステータス

斧から剣に持ち替えた!


paizaラーニング『C言語入門編4: 配列の基礎 (全9回) 』を受講してみた

2021-02-04 22:07:56 | paiza

『C言語入門編4: 配列の基礎 (全9回) 』


決まったサイズの配列は簡単だけど、
可変長の配列を作るとき面倒だったよな。
あんまり覚えてないけど😁 

メモ

#03:配列の要素を取り出してみよう

  • セグメンテーション違反 (segmentation fault)
    • 配列の範囲外にアクセスして値を書き換えようとしたときなどに、エラーが発生する場合があります。このようなエラーは、「セグメンテーション違反 (segmentation fault) 」と呼ばれます。
    • セグメンテーション違反は配列に限定されたエラーではなく、他にもさまざまなことが原因で発生します。

#04:ループで配列を処理しよう

  • memcpy で配列をコピーする
    #include <string.h>
    memcpy(b, a, sizeof(b));

#05:文字列を理解しよう

  • C言語の文字列の概要
    • C言語には文字列型がない
      → 文字列は文字 (char 型) の配列
    • 最後の文字の次の要素にはヌル文字 '\0' が必要
  • 文字と文字列の違い
    • 文字にはシングルクオート (' ') を使う
    • 文字列にはダブルクオート (" ") を使う

#06:文字列の長さを求めよう

  • string.h:文字列を扱うための関数が定義されたライブラリ
    #include <string.h>
    string.h には、以下のような関数が定義されています。
    • strlen : 文字列の長さを求める
    • strcmp : 文字列を比較する
    • strcpy : 文字列をコピーする
    • strtok : 文字列を区切り文字で分割する
    • memcpy : オブジェクトを指定したサイズだけコピーする

#09:strtok で文字列を分割しよう

  • strtok で文字列を分割する
    char *tp;
    tp = strtok(str, ",");
    • strtok を使うと、空白文字以外でも文字列を分割できる。
    • strtok の 1 つ目の引数は、
        1 回目の呼び出しでは、文字列を格納した変数、
        2 回目以降の呼び出しでは、NULL
      を指定する。

認定証

意外に知らないこともいっぱいあったな。
strtokを使った文字列分割って初めてだったかも。


学習ステータス


JOB CHANGEって書いているけど、JOBは兵士のままの気がする😅 
あと、茶髪になってチャラい感じになってるな。