• ベストアンサー

参照送りした構造体のメンバ変数の扱い方が

自作関数に構造体のポインタを送り、メンバ変数の値を扱いたいのですが、 &で送り、*で受け取り、*とアロー演算子でメンバを指定しても 「error C2100: 間接指定演算子 (*) の使い方が正しくありません。」 と出てしまいます。 変数と構造体とでは勝手が違うのでしょうか? どうすればメンバ変数の値を扱えるのでしょうか。

noname#202167
noname#202167

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

  • ベストアンサー
  • gao3967
  • ベストアンサー率28% (29/100)
回答No.1

言葉だけの説明ではよく分かりませんが、「*とアロー演算子」とあるので、恐らく変数の前に*を付けてアロー演算子を使用していると思いますが、アロー演算子を使用する場合は、変数の前に*は必要ありません。

noname#202167
質問者

お礼

>アロー演算子を使用する場合は、 >変数の前に*は必要ありません。 そうだったのですね; 無事解決できました。 ご回答、ありがとうございました~

関連するQ&A

  • 参照送りした変数の値が戻ってしまいます。

    ある構造体を自作関数で計算させる為、 構造体型のポインタを引数にして、そこへ参照送りしています。 しかし、自作関数内でアロー演算子を使って メンバの値を書き換えても 自作関数内では反映(デバッグで確認)されているのですが、 自作関数を出たら元の値に戻ってしまいます。 私が何かを勘違いしているからこうなるのだと思いますが、 値が戻ってしまうのは インスタンスが別物になっているのでしょうか? それとも扱い方が悪くて書き換えそのものが失敗しているのでしょうか? 推測で構いませんので 何か確認すべき点などの指摘をして頂けますと幸いです。

  • 構造体のマスクというメンバ

    一般的な構造体についての質問です。 例えば CHOOSECOLOR 構造体のようにメンバにマスクを持つ構造体があって、 その構造体に値を代入する関数を使うには、CHOOSECOLOR 構造体のマスクを 設定し、そのマスクで有効にしたメンバだけが値を入れられるんですよね? マスクを持つ構造体というのは、それに値を入れる関数を使う前に マスクを指定してから、その構造体のアドレスを関数の引数にセット するんですよね? マスクは無視されて、それ以外の全てのメンバに値が入るというわけでは ないですよね?

  • 構造体変数がないとメンバ操作できないのはなぜ?

    C言語の構造体に関して質問がありますが、structで型を作成して、構造体変数にてメンバの代入・参照をする。ということなんですが、なんでメンバ操作には構造体変数からでないといけないのでしょうか? 直接、型枠にてメンバ操作をすれば良いのに、なぜ構造体変数から操作しないといけないのでしょうか? 「クラス」や「オブジェクト」みたいに、一々ゼロから作成したり、コピペで作成しなくても済むように、このような形になっているのでしょうか? 回答の方よろしくお願いします。

  • 不正な構造体の演算

    ある構造体を戻り値として関数からかえして、変数に代入すると不正な構造体の演算というエラーになります。 これは、どういったことが原因と考えられますか?

  • 構造体のメンバ変数についての質問

    構造体のメンバにポインタを定義しようと思っているのですが, 次のように2つの構造体に互い違いにポインタを持たせることができません. struct A{ B *b; }; struct B{ A *a; }; 実際はクラスでこれと似たようなことができなくて困っています. 方法はないのでしょうか? わかる方いたら教えてください.

  • 構造体のポインタに関する質問

    構造体の中にポインタ変数を置いたのですが、代入時に members.*pstack=*pushdeta; と記述すると、 エラー E2451 C:\WINDOWS\デスクトップ\作成\s\ds.cpp 85: 未定義のシンボル pstack(関数 stack::push(int *,char *) ) とエラーが出てしまいます ちなみに↓がその構造体です struct stack_member{ int *pstack; char *chpstack; int *pfornt; }members; このエラーの解決方法がわかる方が居たら教えてください (*を取れば、エラーは出ない) ちなみにこれを書いた言語はC++です

  • 構造体を指すポインタからその中のポインタ変数が指す要素の参照

    構造体を指しているポインタから、 その構造体内にあるポインタ変数の指している要素に値を代入する方法が、どうしてもわかりませんでした。 どなたか助けてください、お願いします。 struct Kouzou { int* p; }; int main() { Kouzou kou; Kouzou* k_p; k_p = &kou; k_p -> *p = 10; //エラー }

  • グローバルな構造体のメンバ変数のアドレスの取得

    グローバルな構造体のメンバ変数のアドレスはどうやって取得したらいいでしょうか?

  • C言語で構造体のメンバを簡単に出力する方法ありますか?

    いつもお世話になっています。 C言語の質問です。 単体テストログを取るために、 “関数Aをコールする前後で、関数Aに引数として渡す構造体のメンバをすべて”printf(もしくはfprintf)で出力して比較確認しなければならないのですが、 構造体のメンバが250とか、150とかあり、メンバ名もxxx_01,xxx_02などのようにエクセルなどで簡単に加工して作れるものではないので、いちいちメンバ名を指定しなければならないのでとても大変です。 オブジェクト指向言語なら、for each文とかでオブジェクトのメンバを簡単に取り出せるのでしょうが(間違っているかもしれません・・・)、C言語で構造体のメンバを、for文などのループを使って簡単に出力できる方法はないでしょうか? メンバの型は、一定ではなく、char、int、double、別の構造体のポインタ型(これは出力しなくて良い)と混在しています。メンバが全て同一の型ならポインタで構造体の先頭アドレスからsizeof(メンバの型)の分インクリメントしていけば出力できそうな気もしますが、メモリ上に連続して確保されるのかも私にはわからないので困っています。 enumで列挙して・・・というのも調べてみましたが、応用は出来ないようでした。 どなたか、地道にメンバ名を書いて出力する以外の方法をご存知の方、いらっしゃいましたらお知恵をお貸しください。 よろしくお願いいたします。 ※説明不足の点がありましたら補足いたします。

  • 構造体と構造体型の変数宣言箇所

    はじめてborlandC++builder6でプログラムを作っているのですが、構造体と構造体型の変数宣言箇所についてわからないことがあるので質問させてください。 あるフォームのソースファイル(○○○.cpp)内の関数で、自分で定義した構造体を使う場合、ヘッダファイル(○○○.h)に構造体を定義すると、関数内で「変数が未定義」エラーになってしまいます。一方、ソースファイル(○○○.cpp)の先頭に書けばエラーになりません。  ヘッダファイルに変数定義した場合とソース内の先頭に構造体と構造体型変数を定義するのでは何が違ってくるのでしょうか?

専門家に質問してみよう