struct 和 typedef struct 的区别

前言

 在学习结构体的过程中,练习时发现结构体的定义有时使用srtuct,而有时使用typedef struct,那么这两者在使用时到底有什么区别呢?

struct和typedef struct的区别


C语言中的struct和typedef struct

struct

对于struct定义结构体,如果没有typedef,那么声明变量时要么定义结构体的同时定义结构体变量,要么必须要用struct Books book;来声明

  1. 定义结构体的同时定义结构体变量:
struct Books{   //Books是结构体标签
   char  title[50];
   char  author[50];
   int   book_id;
}book; //结构体变量
  1. struct Books book声明变量:
struct Books{
   char  title[50];
   char  author[50];
   int   book_id;
};
struct Books book;

那么,以上这两种方式访问book_id的值时:

int id = book.book_id;
printf("%d",id);

typedef struct
typedef struct Books   //Books是结构体标签
{
   char  title[50];
   char  author[50];
   int   book_id;
}book; 
book book1;  //声明变量

那么声明变量时,只需book book1;即可。
这里book其实是struct Books的一个别名,就像int、float一样,是自己定义的一个变量类型,这个类型叫做结构体类型,
book book1;相当于 struct Books book1;

如果想访问结构体的book_id成员的值:

int id = book1.book_id;
printf("%d",id);

C++中的struct和typedef struct

struct

C++中使用struct定义结构体,要么定义结构体的同时定义变量,要么定义完结构体后再声明变量

  1. 定义结构体的同时定义变量
struct Books{
	char  title[50];
    char  author[50];
    int   book_id;
}book;
  1. 定义完结构体后再声明变量
struct Books{
	char  title[50];
    char  author[50];
    int   book_id;
};
Books book;

注意,与C语言不同的是,声明变量时只需用Books book;即可。

typedef struct

与C语言一样,用typedef struct定义

typedef struct Books 
{
   char  title[50];
   char  author[50];
   int   book_id;
}book; 
book book1;  //声明变量

这里的book仍然是结构体类型,不是变量,如果要声明变量也要用book book1;

总结

由于还在学习中,理解不是很深刻,如有错误,请指正。今后如果了解到新的内容,将会持续更新~欢迎大家交流经验。

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值