龍神録プログラミングの館 第4章 構造体の初期化

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
たぷろ
記事: 2
登録日時: 6年前

龍神録プログラミングの館 第4章 構造体の初期化

#1

投稿記事 by たぷろ » 6年前

初歩的なことなのですが、龍神録プログラミングの館の第4章で少し気になる点がありました。

キャラクタデータを構造体で定義していると思うのですが、初期化をしていないのに座標が(0, 0)だったり、
キャラクタ画像も1枚目が選ばれていると思います。

わざわざ初期化をしなくても勝手に構造体の中身は0で定義されるのでしょうか?

もし過去に同じような質問があったらすみません。

アバター
keito94
記事: 264
登録日時: 7年前
連絡を取る:

Re: 龍神録プログラミングの館 第4章 構造体の初期化

#2

投稿記事 by keito94 » 6年前

基本的には、構造体は初期化しておいたほうがいいですよ~。
構造体も変数の集まりなので、初期化しておかないと行けないんです。
デバッグは投げ捨てるものではない。
今までの質問でこれは学んだこと。
質問する時は、必ずちゃんと調べた上に問題をもとにした仕様書を作ってから質問すること。
仕様書の大切さを改めて思い知った…。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 龍神録プログラミングの館 第4章 構造体の初期化

#3

投稿記事 by みけCAT » 6年前

この場合、キャラクタデータの構造体は静的スコープを持つグローバル変数なので、明示的に初期化しなければゼロで初期化(zero-initialize)されます。
構造体であっても、コンストラクタを明示的に定義していなければ、静的でないローカル変数(自動変数)のクラスではない要素は初期化されません。
詳しくはN3337の3.6.2 Initialization of non-local variablesと8.5 Initializersを参照。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

たぷろ
記事: 2
登録日時: 6年前

Re: 龍神録プログラミングの館 第4章 構造体の初期化

#4

投稿記事 by たぷろ » 6年前

お二人とも回答ありがとうございました。
とても気になっていたことなので、謎が解けて良かったです。

返信

“C言語何でも質問掲示板” へ戻る