7

私はCに慣れていませんが、対処しなければならない問題を見つけました。別の構造体へのポインターである構造体のメンバーにアクセスするにはどうすればよいですか?

元。

typdef struct {
   int points;
} tribute;

typedef struct {
    int year;
    tribute *victor;
} game;

int main(){
  tribute myVictor;
  myVictor.points = 10;  

  game myGame;
  myGame.year = 1994; // Runs fine
  myGame.victor = myVictor; // I want to point the victor member of the game struct to 
                            //myVictor object... But it gives me an error
} 

どうすればこれを修正できますか? myGame 変数をポインターとして作成する必要があることはわかっていますが、通常の構造体変数でこれを行うことができるかどうかを尋ねています。

4

5 に答える 5

10

試す:

myGame.victor = &myVictor;
于 2012-10-26T07:27:22.803 に答える
1

この問題は、構造体自体とは何の関係もありません。データ変数をポインターにコピーしようとしているだけですが、これは無効です。の代わりにmyGame.victor = myVictor;、myGame.victor が myVictor のアドレスを指すようにします。

myGame.victor = &myVictor;

于 2012-10-26T07:30:45.783 に答える
1

ビクター メンバーをポイントする場合は、ビクター ポインター (アドレス、メモリ方向など) を渡す必要があります。

したがって、次のようになります。

myGame.victor = &myVictor;
于 2012-10-26T07:31:38.127 に答える
1
typdef struct {
   int points;
} tribute;

typedef struct {
    int year;
    tribute *victor;
} game;

int main(){
  tribute myVictor;
  myVictor.points = 10;  

  game myGame;
  myGame.year = 1994; 
  myGame.victor = &myVictor; 
} 

コードの最後の行の エラーはvictor正しいものpointerです。tributeaddressmyvictor

最後の行でこれに変更されました:myGame.victor=&myVictor

于 2012-10-26T07:32:07.407 に答える
1

ゲーム構造体の勝者はポインタです。したがって、myVictor のアドレスを割り当てる必要があります。このようなもの:

myGame.victor = &myVictor;
printf("Points is: %d",myGame.victor->points);
于 2012-10-26T07:34:22.990 に答える