構造体の代入について

構造体は通常の変数と同じようにまとめて代入できる

typedef struct Hoge_tag {
    int x;
    char y[100];
} Hoge;

Hoge hoge = {0, "Hello", };
Hoge fuga;

fuga = hoge;

メンバに配列があっても問題なく代入可能。ちゃんとコンパイラが面倒見てくれる。


ただしメンバにポインタがあると単にポインタの値をコピーするだけになる。*1それでは困る場合は、実体をリンクして、その先をコピーするようなコードを自分で書かなければならない。


構造体の代入を使っていれば、構造体に変更があっても代入部分には一切手を加える必要がない。
なのだが、現在参画しているプロジェクトはなぜかメンバー単位に代入していくようになっている。なぜそうなのか聞きそびれて今さら聞きにくくなってしまった。どうしたものか。

*1:浅いコピー・シャローコピー