- ベストアンサー
ポインタを使った構造体のプログラムを作成する方法
- ポインタを使ってメンバに値を入力して表示するプログラムを作成する方法について教えてください。
- プログラムの中でポインタ変数の初期化でエラーが発生しています。
- エラーの内容は「初期化されていないローカル変数 'b' が使用されます」となっています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>エラーの内容は「初期化されていないローカル変数 'b' が使用されます」となっています。 b = &a; とか、 struct XYZ c; b = &c; で、ポインタ変数bを初期化(bを struct XYZ のデータのどれかを指す)すれば、いいだけではないですか? 解説 struct XYZ a = {12,999999,1.41421356},*b; は、 struct XYZのデータ a と struct XYZのデータを指すポインタ変数 b を定義しています。 aの中身は {12,999999,1.41421356} です bの中身はゴミ(何を指しているか不明)です b = &a; ポインタ変数 b はstruct XYZのデータ a を指します struct XYZ c; b = &c; struct XYZのデータ c を定義し、 cの中身はゴミですが、 ポインタ変数 b はstruct XYZのデータ c を指します この直後に set_xyz(b,a.x,a.y,a.z); を実行すれば、ポインタ変数 b の指すstruct XYZのデータ(今回はaやc) に a.x,a.y,a.z の3つのデータが書き込まれます。
その他の回答 (3)
- tsunji
- ベストアンサー率20% (196/958)
bはポインタなので、変数を入れる場所がありません。 bをポインタではない宣言して、set_xyzに渡すときポインタで渡せばいい。
お礼
そうすると、そもそもaだけでプログラムが完成できますね…。 b余計でした。すみません。 回答有難うございます。
- Wr5
- ベストアンサー率53% (2173/4061)
>set_xyz(b,a.x,a.y,a.z); この時、bはどこを差しているんでしょう? >struct XYZ a = {12,999999,1.41421356},*b; こう記述したら、bがaを差している。という認識でしょうか?
お礼
そういう認識ですね。 bというポインタを作って、それを差せば値が代入できるのでは、と考えた次第です。 ですが、bのどこに入れるかと言われてやっとわかりました。 ありがとうございます。
- Tacosan
- ベストアンサー率23% (3656/15482)
初期化すればいい.
お礼
初期化はしてみたましたが更にエラーが増えただけでした。 回答有難うございます。
お礼
なるほど、エラーで出た初期化とはそういうことだったんですね。 うっかりしていました。 ありがとうございます。スッキリしました。