我知道他们之间的基本区别只是在以下特殊情况下有疑问:
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)
你能告诉我的是这里发生了什么?
在第一种情况下,您正在创建一个struct books名为的对象book.
在第二个中,您将book为该类型定义别名struct books.因此book,不是对象而是类型名称.