No.3ベストアンサー
- 回答日時:
> 一括初期化関数でも作るしかなさそうですね
static変数を初期化用に用意しておくのはいかが?
http://oshiete.goo.ne.jp/qa/2658268.htmlより
>静的記憶域期間をもつオブジェクトを明示的に初期化しない場合、
>次の規定に従う。
>a) そのオブジェクトの型がポインタ型の場合、空ポインタに初期化する。
>b) そのオブジェクトの型が算術型の場合、(正または符号なしの)0に初期化する。
>c) そのオブジェクトが集成体の場合、各メンバにa)~d)の規定を(再帰的に)
>適用し初期化する。
>d) そのオブジェクトが共用体の場合、最初の名前つきメンバにa)~d)の規定を
>(再帰的に)適用し初期化する。
なので、zero初期化されていることが、規格で保証されます。
typedef struct hoge_struct
{
int a;
int b;
} hoge_struct;
static hoge_struct initializer; //初期化用変数。値は変えない。
int main(void)
{
hoge_struct hoge;
hoge = initializer;
return 0;
}
真っ白に何度も初期化したいなら、こんな感じでどうでしょう?
関数を用意して初期化すると、構造体のメンバが増えると関数も修正しないといけない
ですが、これだと関数を変更しなくてすむし。
No.6
- 回答日時:
> 構造体変数に {0} を代入すると
{0}を代入することは原則としてできませんが、initializer_listということなら可能です。
std::vector<int> v;
v = {0};
といったことができますから。
ただし、代入後は1要素だけになってしまいます。
(その構造体とやらをどんな仕様にするかにもよりますが...)
No.5
- 回答日時:
> {0}は何?
{0}で初期化というのは、C言語の時からある手法ですね。
なにやら予約語のようにも見えますが、ただのカッコ0です。
例えば、初期化済み配列を宣言するとします。
int a[2] = {1,2};
これはa[0]=1,a[1]=2で初期化されるのは分かりますよね。
では、数が合わないとき
int a[2] = {1};
こんなとき、不足分は0で初期化されることが規格で保証されています。
つまり、a[0]=1,a[1]=0ですね。
ですから、全て0で初期化する場合は、
int a[2] = {0};
とすれば良いわけです。
数が多くても、型が違っても同様です。
char buf[128] = {0}; // ゼロで初期化
このことを知っていると理解しやすいと思いますがいかがでしょう。
No.1
- 回答日時:
> 構造体変数に {0} を代入すると
代入の右辺に {0} はかけないと思うけど。少なくとも私の環境ではコンパイルエラーになる。
初期化なら右辺に {0} を書くことができる。
この違いは分かるかな?
> なんでこんなことが出来るのでしょう?
規格で決まっているから。
規格そのものの文章は知らないけど以下に説明があります。
http://www.kijineko.co.jp/node/681
有難うございます。初期化の時だけでしたね。
ループの中で一括で初期化できれば便利だと思ったのですが、
一括で初期値に戻すのは無理みたいです。
一括初期化関数でも作るしかなさそうですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Word(ワード) ワードで,特定の文字だけ,字体を一括変換する方法は? 1 2023/04/26 10:11
- 人類学・考古学 エジプト神話に出てくるヌト神の身体に表現された星印はパッドを除いたキー構造を意図していませんか? 1 2022/11/10 11:48
- iPhone(アイフォーン) 以前使っていたSIMカード抜いた状態のiPhoneの 写真アプリの中のデータを一括削除して 『最近削 2 2022/05/20 03:00
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/15 08:30
- 住民税 会社で退職手続きをした際、住民税?の支払いは会社の引き落としで一括(来月の給料)で支払うか、自分で支 2 2022/06/29 22:20
- フリーソフト サクラエディタの正規表現(grep機能)の使い方 3 2022/06/22 10:29
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
とっておきの手土産を教えて
お呼ばれの時や、ちょっとした頂き物のお礼にと何かと必要なのに 自分のセレクトだとついマンネリ化してしまう手土産。 ¥5,000以内で手土産を用意するとしたらあなたは何を用意しますか??
-
プリン+醤油=ウニみたいな組み合わせメニューを教えて!
プリンと醤油を一緒に食べると「ウニ」の味がする! というような意外な組み合わせから、新しい味になる食べ物って色々ありますよね。 あなたがこれまでに試した「組み合わせメニュー」を教えてください。
-
お風呂の温度、何℃にしてますか?
みなさん、家のお風呂って何℃で入ってますか? ぬるめのお湯にゆったり…という方もいれば、熱いのが好き!という方もいるかと思います。 我が家は平均的(?)な42℃設定なのですが、みなさんのご家庭では何℃に設定していますか?
-
構造体の静的な初期化
C言語・C++・C#
-
C++言語で、構造体のコピーは可能(しても良い)のでしょうか?
C言語・C++・C#
-
CString から LPCTSTRの型に変換
C言語・C++・C#
-
-
4
構造体メンバの初期化
C言語・C++・C#
-
5
std::stringからLPCWSTR型への変換
C言語・C++・C#
-
6
C言語での引数の省略方法
C言語・C++・C#
-
7
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
8
既定のコンストラクタがない?
C言語・C++・C#
-
9
構造体の初期化方法について
C言語・C++・C#
-
10
画面を強制的に再描画させる方法
C言語・C++・C#
-
11
typedef enumの使い方を教えてください
C言語・C++・C#
-
12
構造体のデータを丸ごとコピーしたい
C言語・C++・C#
-
13
複数の変数を宣言する時、同時に初期化?できないでしょうか?
Java
-
14
「#undef」と「#define」の使い方について
C言語・C++・C#
-
15
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
16
char*を初期化したいのですが
C言語・C++・C#
-
17
C言語で、メモリを解放しないで終わるプログラム
C言語・C++・C#
-
18
charからLPTSTRへの変換方法
C言語・C++・C#
-
19
絶対パスからのファイル名の切り離し
C言語・C++・C#
-
20
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Integer変数をカラにしたいので...
-
VBAのプログラムで、DIAG = 1# ...
-
「#undef」と「#define」の使い...
-
VBAにてcolorindexを変数に格納...
-
charとucharの違い
-
C++ 構造体の一括初期化 {0}
-
aspでユーザー定義の構造体を作...
-
構造体のデータを丸ごとコピー...
-
構造体のポインタにNULLが入らない
-
日付チェック関数について
-
構造体の初期化方法について
-
構造体にする理由・利点・使用例
-
int型とchar型について
-
リッチテキストボックスの中身...
-
値が変わるのはどうしてでしょ...
-
typedefをプログラム中で解除す...
-
値が代入されてない時
-
C言語 構造体の中に共用体を定...
-
この構造体の意味が分かりません。
-
VBAの変数のデータ型を変更する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのプログラムで、DIAG = 1# ...
-
Integer変数をカラにしたいので...
-
C++ 構造体の一括初期化 {0}
-
「#undef」と「#define」の使い...
-
C言語 構造体の中に共用体を定...
-
構造体のデータを丸ごとコピー...
-
値が代入されてない時
-
typedefをプログラム中で解除す...
-
charとucharの違い
-
異なる構造体のデータのコピー
-
構造体のポインタにNULLが入らない
-
VBAにてcolorindexを変数に格納...
-
long型のデータをバイト型の配...
-
VBAの変数のデータ型を変更する...
-
整数から16進数への変換 現在c...
-
構造体の初期化方法について
-
日付チェック関数について
-
1バイトデータの読み出しについて
-
GTKプログラミングで型宣言する...
-
命名規則 VB 構造体
おすすめ情報