typedef struct和struct之间的区别?

Pri*_*tap 3 c struct

我知道他们之间的基本区别只是在以下特殊情况下有疑问:

struct books{
    int id;
    char* title;    
  }book;

book.id=9;    // this is valid;
Run Code Online (Sandbox Code Playgroud)

但在以下情况下typedef:

typedef struct books{
  int id;
  char*title;
}book;
book.id=9;    //it is not valid we have to do like book b1; then b1.id=9 is valid
Run Code Online (Sandbox Code Playgroud)

你能告诉我的是这里发生了什么?

Mat*_*ath 6

在第一种情况下,您正在创建一个struct books名为的对象book.

在第二个中,您将book为该类型定义别名struct books.因此book,不是对象而是类型名称.