- ベストアンサー
グローバルな構造体のメンバ変数のアドレスの取得
グローバルな構造体のメンバ変数のアドレスはどうやって取得したらいいでしょうか?
- みんなの回答 (4)
- 専門家の回答
関連するQ&A
- 構造体変数がないとメンバ操作できないのはなぜ?
C言語の構造体に関して質問がありますが、structで型を作成して、構造体変数にてメンバの代入・参照をする。ということなんですが、なんでメンバ操作には構造体変数からでないといけないのでしょうか? 直接、型枠にてメンバ操作をすれば良いのに、なぜ構造体変数から操作しないといけないのでしょうか? 「クラス」や「オブジェクト」みたいに、一々ゼロから作成したり、コピペで作成しなくても済むように、このような形になっているのでしょうか? 回答の方よろしくお願いします。
- 締切済み
- その他(プログラミング・開発)
- 参照送りした構造体のメンバ変数の扱い方が
自作関数に構造体のポインタを送り、メンバ変数の値を扱いたいのですが、 &で送り、*で受け取り、*とアロー演算子でメンバを指定しても 「error C2100: 間接指定演算子 (*) の使い方が正しくありません。」 と出てしまいます。 変数と構造体とでは勝手が違うのでしょうか? どうすればメンバ変数の値を扱えるのでしょうか。
- ベストアンサー
- C・C++・C#
- [C] 構造体メンバーのカンマ区切り出力
構造体メンバーのカンマ区切り出力をしたいと思っています。 たとえば struct XXX { char name[20]; char address[40]; char tel[12]; ... 100メンバーくらいある } のような構造体があったとします。 printf("%s,%s,%s\n", s_ptr->name, s_ptr->address, s_ptr->tel); などのようにメンバー名(変数名)を参照せずに、構造体のメンバーへのポインタを順次取得しループして出力するなどして、実現することは可能でしょうか?
- ベストアンサー
- C・C++・C#
- 構造体のマスクというメンバ
一般的な構造体についての質問です。 例えば CHOOSECOLOR 構造体のようにメンバにマスクを持つ構造体があって、 その構造体に値を代入する関数を使うには、CHOOSECOLOR 構造体のマスクを 設定し、そのマスクで有効にしたメンバだけが値を入れられるんですよね? マスクを持つ構造体というのは、それに値を入れる関数を使う前に マスクを指定してから、その構造体のアドレスを関数の引数にセット するんですよね? マスクは無視されて、それ以外の全てのメンバに値が入るというわけでは ないですよね?
- ベストアンサー
- C・C++・C#
- 構造体のメンバ変数についての質問
構造体のメンバにポインタを定義しようと思っているのですが, 次のように2つの構造体に互い違いにポインタを持たせることができません. struct A{ B *b; }; struct B{ A *a; }; 実際はクラスでこれと似たようなことができなくて困っています. 方法はないのでしょうか? わかる方いたら教えてください.
- ベストアンサー
- C・C++・C#
- 構造体の変数の値を、動的に取得する方法を教えてください
C言語で、構造体の変数の値を取得したいのですが、その際、 他の変数に格納してある文字列を元に動的に行いたいのですが、可能でしょうか? イメージとしては、 struct Entry{ char name[20]; char address[80]; char email[40]; }; struct Entry data; strcpy(data.name, "Taro"); strcpy(data.address, "Tokyo"); strcpy(data.email, "taro@taro"); char var_name[20]; strcpy(var_name, "email"); printf("%s", data.var_name); ↑この行の構造体の変数へのアクセス方法が間違っているのはわかっていますが、このような時に「taro@taro」と出力させたいのです。 var_nameの値を「name, address, email」に換える事により「Taro, Tokyo, taro@taro」と出力を切り換えたいと思っています。 普段は他の言語をよく使用しており、そちらではこの手法を時々使っていたのですが、C言語でも出来ないものかと思っております。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 構造体型のポインタ変数を含む構造体
struct seiseki_tag { Int32 math ; Int32 english ; Int32 science; } ; typedef struct seiseki_tag SEISEKI ; struct personal_tag { Char name ; Int32 num ; SEISEKI *sptr } : typedef struct personal_tag PERSONAL ; struct info_tag { PERSONAL person_info ; } ; typedef struct info_tag INFO ; たとえば、上記のように3つの構造体があり、PERSONAL構造体のメンバーに SEISEKI構造体の型を持つポインタ変数が含まれているような場合で、下記のように INFO型のポインタ変数からSEISEKI構造体のメンバーを参照する方法を教えてください。 PERSONAL構造体メンバーのnameやnumは INFO *info ; info->person_info.name ; info->person_info.num ; のように参照すると思いますが、sptrが示すSEISEKI構造体のメンバーへの アクセスができません。下記のように参照を試みたのですがコンパイルは 通るのですが、実際に参照できていませんでした。 INFO *info ; SEISEKI *seiseki ; seiseki = info->person_info.sptr ; seiseki->math ; 判りにくい説明で申し訳ありませんが、どなたか教えていただければと思います。 よろしくお願いいたします。
- ベストアンサー
- C・C++・C#
- 構造体 アドレス
VC++6 こんにちは。構造体のアドレスを文字列ポインタで操作することに悩んでいます。下にソースの一部を書きます。 typedef struct{ char code[100]; int type; }AAA; typedef struct{ double method[4][3]; int area; }BBB; 複数の構造体があり、 BOOL CTestApp::File_Check(){ AAA aaa; ~ db.DB_regi(2, (char *)&aaa); ~ } void CData::DB_regi(int key, char *buff) { switch(key){ ~ case 2: sss.push_back(buff); //vector<char *> sss; break; } で、データを登録し、 int CTestApp::Data_Check() { ~ AAA aaa; db.DB_get(2, (char *)&aaa); ~ } void CData::DB_get(int key, char *buff) { switch(key){ ~ case 2: buff = sss[i]; break; ~ } で、構造体のアドレスを取得しようと思ったら、取得できませんでした。 //DB_getの中では、aaa = (AAA *)buff;とすれば指定の構造体を取得できる。 DB_get関数をどのようにしたら、Data_Check()で、登録した構造体を取得できるのか教えてください。長くなってすみません。
- ベストアンサー
- C・C++・C#