アプリ版:「スタンプのみでお礼する」機能のリリースについて

構造体のメンバーをx、y、zとして、このメンバーの値をすべて0にする関数はどのように作ればいいのですか?
全くわかりません。C言語です。

A 回答 (4件)

いちいち全部のメンバーに代入するのがめんどくさいと思ったら, (ちょっとメモリは必要だけど)


void clearMembers(struct Foo *p)
{
static struct Foo zero = {0};
*p = zero;
}
でもいけるな.

ちなみに #3 の方法で「ポインタメンバーの値が NULL になる」とは限らないので要注意.
    • good
    • 0

学校の課題でしたら、No1, No2の方の回答がふさわしいでしょう。


ちなみに、構造体の全メンバに0代入する場合、私はいつも下記のようにします。

構造体をstruct XYZとすると、
void
zeroXYZ(struct XYZ *xyz)
{
memset(xyz, 0, sizeof(struct XYZ));
}

というか、関数化せず1行で書いてしまいます。
行儀のよい書き方とは言えませんが、
構造体のメンバが多く、値0、ポインタNULLに初期化したい場合、
結構こういった書き方をする人はいるようです。
    • good
    • 0

構造体の型を ABC とすると



void clearAbc(ABC* abc) {
abc->x = 0;
abc->y = 0;
abc->z = 0;
}
    • good
    • 0

関数の引数として、対象の構造体へのポインタを持つ。


関数内で、そのポインタ経由でメンバx,y,zに0を代入する。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!