;
構造体に 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 つのことは%d
、printf
電話のスペルが間違っていることです。
また、使用する標準 I/O ヘッダーも含める必要がありますprintf
。
#include <stdio.h>
このコードは、大幅な変更なしにコンパイルすることはできないため、このコードが貧弱で高速に記述されたコードであることを本当に願っています。