• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ポインタを使った構造体のプログラム)

ポインタを使った構造体のプログラムを作成する方法

このQ&Aのポイント
  • ポインタを使ってメンバに値を入力して表示するプログラムを作成する方法について教えてください。
  • プログラムの中でポインタ変数の初期化でエラーが発生しています。
  • エラーの内容は「初期化されていないローカル変数 'b' が使用されます」となっています。

質問者が選んだベストアンサー

  • ベストアンサー
  • usa3usa
  • ベストアンサー率33% (20/59)
回答No.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つのデータが書き込まれます。

eternidad_beyer
質問者

お礼

なるほど、エラーで出た初期化とはそういうことだったんですね。 うっかりしていました。 ありがとうございます。スッキリしました。

その他の回答 (3)

  • tsunji
  • ベストアンサー率20% (196/958)
回答No.3

bはポインタなので、変数を入れる場所がありません。 bをポインタではない宣言して、set_xyzに渡すときポインタで渡せばいい。

eternidad_beyer
質問者

お礼

そうすると、そもそもaだけでプログラムが完成できますね…。 b余計でした。すみません。 回答有難うございます。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

>set_xyz(b,a.x,a.y,a.z); この時、bはどこを差しているんでしょう? >struct XYZ a = {12,999999,1.41421356},*b; こう記述したら、bがaを差している。という認識でしょうか?

eternidad_beyer
質問者

お礼

そういう認識ですね。 bというポインタを作って、それを差せば値が代入できるのでは、と考えた次第です。 ですが、bのどこに入れるかと言われてやっとわかりました。 ありがとうございます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

初期化すればいい.

eternidad_beyer
質問者

お礼

初期化はしてみたましたが更にエラーが増えただけでした。 回答有難うございます。

関連するQ&A