Chinaunix首页 | 论坛 | 博客
  • 博客访问: 427166
  • 博文数量: 184
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 594
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-17 16:24
个人简介

我是一只小小鸟

文章分类

全部博文(184)

文章存档

2016年(1)

2015年(55)

2014年(127)

2013年(1)

分类: C/C++

2014-04-11 11:12:52

Structtypedef struct的区别和联系

1定义结构体和声明变量

CC++中定义结构体类型时有所区别。

1.1 C中定义结构体类型的2种方式:

1> 定义时使用typedef

typedef struct Calendar    //声明结构体类型;

{

int year;

int mouth;

int day;

}Date;

此时,Date实际上就是struct Calendar结构体别名,即Date=struct Calendar;

这样就可以使用Date来定义变量了,例如:

Date birthday

Date *p;   //p为指向此结构体类型的数据指针;

2> 不写Calendar的结构体类型声明方式

typedef struct

{

int year;

int mouth;

int day;

}Date;

定义变量:  Date birthday;

 

1.2 C++中声明结构体:

struct Calendar

{

int year;

int mouth;

int day;

};

该结构体定义了结构体类型Calendar

声明变量:   Calendar birthday;

2 C++中使用typedef声明结构体

struct Calendar    //声明结构体类型;

{

   int year;

   int mouth;

   int day;

}Date;  

此时,Date1个变量,使用时可以直接访问Date.year;

typedef struct Calendar    //声明结构体类型;

{

   int year;

   int mouth;

   int day;

}Date;

而此时Date1个结构体类型,即Date=struct Canlendar;

使用时Date需要先 Date d1;d1.birthday=2014;完整表示为:

Date d1;

d1.birthday=2014;

总结

typedef structstruct的区别:

typedef struct tag_MyStruct

  int num;

   long length;

} MyStruct;

上面的tag_MyStruct是标识符,MyStruct是变量类型(相当于(int,char))

该结构完成了两个操作:

1) 定义一个新的结构类型

struct tag_MyStruct

{   

  int num; 

  long length; 

};

  分析:tag_MyStruct称为“tag”,即“标签”,实际上是一个临时名字,不论是否有typedef struct关键字和tag_MyStruct一起,构成了这个结构类型,这个结构都存在。

  我们可以用struct tag_MyStruct varName来定义变量,但要注意,使用tag_MyStruct varName来定义变量是不对的,因为struct tag_MyStruct合在一起才能表示一个结构类型。

2) typedef为这个新的结构起了一个名字---MyStruct

 typedef struct tag_MyStruct MyStruct;

 因此,MyStruct实际上相当于struct tag_MyStruct,我们可以使用MyStruct varName来定义变量。

typedef struct tag_MyStruct

   int num;

  long length;

} MyStruct;

声明结构后,定义变量的方式:

C中定义变量的2种方式

c++中定义变量的3种方式

1struct tag_MyStruct varName;

2MyStruct varName;

1struct tag_MyStruct varName;

2MyStruct varName;

3tag_MyStruct varName;

 
笨嘴拙舌,不妥之处烦请指正...

阅读(553) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~