-3

構造体にいくつかの値を出力しようとしています..しかし、その値が構造体の構造体で使用されているため、いくつかの問題があります。構造体の構造体の値を参照するにはどうすればよいですか? ご協力ありがとうございました ;)

struct a {
  int a1;   <=====???
  int a2;
};
struct b {
  int a *b1;
  int b2;
};

struct b *data;
printf ("The value of a1 is %d\n", ???? );
4

1 に答える 1

2

;構造体に aを忘れましたa

a構造内で型の変数を宣言するときは、b間違っています。そのはず:

struct b {
    struct a b1;
    int b2;
};

構造体へのポインターではなく、構造体型として宣言するだけなので、メモリを割り当てる必要はありません。

そして、このコードを本当にコンパイルしようとしているのであれば、間違いなくエントリ ポイントが必要です。

int main(void)
{
    struct b data;
    printf("The value of a1 is %d\n", data.b1.a1);
    return 0;
}

ご覧のとおり、b内部mainで という名前の構造体を宣言しましたdata。を使用するだけで、そのメンバーとそのメンバーのメンバーにアクセスできるようになりました.。そして、それがポインターであった場合 (そして正しく割り当てられている場合)、->代わりに を使用できます.

私が気付いたもう 1 つのことは%dprintf電話のスペルが間違っていることです。

また、使用する標準 I/O ヘッダーも含める必要がありますprintf

#include <stdio.h>

このコードは、大幅な変更なしにコンパイルすることはできないため、このコードが貧弱で高速に記述されたコードであることを本当に願っています。

于 2012-11-19T02:27:51.843 に答える