您的位置:首页 > 编程语言 > C语言/C++

C/C++中结构体的定义和typedef的使用

2016-09-14 15:21 1141 查看
最近复习数据结构的时候,总是分不清struct、typedef struct和他们后面跟的tag名称的位置和含义,今天就来翻书记录下具体结构体的定义和typedef的使用。

一、结构体定义

1.C语言中结构体定义:C允许用户建立由不同类型的数据组成的组合型的数据结构。

struct 结构体名  {成员表列};  只是建立了一个结构体类型,相当于模型而没有定义变量,其中并无具体数据。因此,需要定义结构体类型变量。

2.定义结构体类型变量的方法:

  A.先声明结构体类型,再定义该类型的变量

   struct
结构体名  {成员表列}; 

   struct 结构体名  结构体变量名1,结构体变量名2;

  B.在声明类型的同时定义变量

    struct
结构体名 {成员表列}结构体变量名;

  C.不指定类型名而直接定义结构体类型变量

    struct
{成员表列}结构体变量名;

3.定义结构体数组并初始化

  struct 结构体名 {成员表列}数组名[数组长度]={"aas","sad","dsf"};

二typedef关键字使用方法

1.typedef可用来指定新的类型名来代替已有的类型名。

2.使用情况:

  A.简单地用一个新的类型名代替原有的类型名

  typedef float Real;   //指定Real为类型名,作用于float相同

  B.命名一个简单的类型名代替复杂的类型表示方法,如命名一个类型名代替结构体类型

  typedef struct{成员表列}结构体变量名; 
  //声明一个新类型名结构体变量名,代替以上结构体,可用它去定义变量

三、最后,看下区别:

1.typedef struct 结构体变量名{成员表列}结构体变量名;

2.struct 结构体变量名{成员表列}结构体变量名;

3.typedef struct {成员表列}a1,a2,a3;相当于typedef a1 a2;typedef
a1 a3;

1和2的区别在于申请变量时,1需要写 struct node n;而2则需要直接写node n;

3则表示结构体变量名都是结构体类型,声明变量时用任何一个都可以。

以上,就是对struct和typedef的定义区分。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: