关于C语言中typedef struct和struct 的用法

关于C语言中typedef struct和struct 的用法关于C语言中typedefstruct和struct的用法之前有几个朋友问我关于这个问题,我让他们去百度,他们说百度上的回答千篇一律,于是就有了写这一篇文章的想法,我也不是什么大咖,只是一个普通的工程师,会尽量的描述的浅显易懂一点。在此之前,我想先谈谈关于typedef和#define的区别,typedef和#define在C语言中的作用就是替换,只不过两个所替换的对象有区别罢了,我举两个…

简单易懂,非常详细!C语言中typedef struct和struct 的用法

总有刚入门的工程师问我这个问题,于是就有了写这一篇文章的想法,我也不是什么大咖,只是一个普通的工程师,会尽量的描述的浅显易懂一点。

在此之前,我想先谈谈关于typedef和#define的区别,typedef和#define在C语言中的作用就是替换,只不过两个所替换的对象有区别罢了,我举两个例子,大家可能就会明白了。

#define N 100 //注意 没有; 分号

何谓替换?就是每当程序编译,遇见N时,就用100去替代N。就比如当程序编译
char name[N];
时,与
char name[100];
是等价的。
那么这么做的好处是什么呢?
给大家打个比方 #define N 555555555555555555555555555555
如果你需要用到555555555555555555555555555555这个数字,你觉得是用N省事呢,还是老老实实数有几个5,然后慢慢打省事呢?

好了,明白了#define,接下来我们说说typedef。

typedef拆开 就是type def,也就是 类型定义,作用和#define是一样的,只不过定义的对象是type,也就是类型。

何谓类型? 最常见的就是那些int char float之类的咯。所以我们接下来再看

typedef int AA

这条语句的意思是用AA去替代int。
所以我们可以这样
int a;
也可以这样
AA a;

只要你把AA看成int,那就OK了,那么为什么要用typedef呢? 好,接下来就是正文了!

咱们先来讲struct,关于struct网上资料很多,这里就不讲的很详细了,typedef struct和struct有区别的地方,我会提一提。
定义结构体的一般格式为:

 struct 结构名

 { 
      类型  变量名; 

      类型  变量名; 
      ... 

 } 结构变量; 

结构名结构变量是有本质区别的,我就简单浅显的用个例子来说明下到底是何区别,这时候实例往往比苍白的语言更有说服力。
在这里插入图片描述
聪明的朋友看到这幅图的瞬间就应该明白两个之间的区别了,但我还是要讲解一下,打个不太恰当的比方。

结构体名,顾名思义,是把下面的这一串打包
{

char name[8];
int age;
char sex[5];
char depart[20];
}
取名叫做 aaaa。
struct和int、float一样,都是用于定义变量的类型,但是根据结构体里面包含的内容不同,比如上述例子中有name/age/sex/depart,所以结构体变量的类型可以有无数种,而不是像上述定义age一样,用个int就行了。
所以当我们要用到结构体定义一个变量时,
不是

struct person2;

而是和例子里的一样

 struct aaaa person2;

多了个aaaa,aaaa表达的意思就是内容包含name/age/sex/depart的结构体。

好,接下来讲结构变量,结构变量就是变量嘛,定义后就不用再次声明,也就是直接省去下面这一段代码

struct aaaa person1;

直接就拿过来使用了,省去声明的那一步。

所以这也是为什么有些结构体定义省去结构名,直接变成

struct  
    { 
    
         char name[8]; 
         int age; 
         char sex[5]; 
         char depart[20]; 
    } person1; 

结构体名和结构体变量都可以省略,但只能省略其一,要不然你怎么定义呢?

struct说完了,那么就一起来看看typedef struct,接下来放例子,看看不同之处。
在这里插入图片描述

 typedef struct 结构名

 { 
      类型  变量名; 

      类型  变量名; 
      ... 

 } 结构别名; 

注意!! 区别来了,这里是结构别名而不是结构体变量了!!
在这里插入图片描述
同样的,这里的结构体名和结构别名也是可以省略的,但也只能省略一个!
也就是可以这样来定义一个结构体

 	person aaa;

或者。

 	struct aaaa aa;

那么有的人就疑惑了,这样为什么用typedef struct?直接用struct里的结构变量定义不就完事了?还省去声明。

其实是这样的,有时候你刚开始想用这个结构体但你不知道又需要建立多少个变量,这时候使用typedef struct就比较省事了。

转载请说明出处哦。

今天的文章关于C语言中typedef struct和struct 的用法分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/31471.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注