struct和typedef struct区别

转载 2015年07月10日 10:16:39

struct和typedef struct

分三块来讲述:
  1 首先://注意在C和C++里不同
    在C中定义一个结构体类型要用typedef:
    typedef struct Student
    {
    int a;
    }Stu;

    于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明)
    这里的Stu实际上就是struct Student的别名。Stu==struct Student
    另外这里也可以不写Student(于是也不能struct Student stu1;了,必须是Stu stu1;)
    typedef struct
    {
    int a;
    }Stu;

    但在c++里很简单,直接
    struct Student
    {
    int a;

    };    
    于是就定义了结构体类型Student,声明变量时直接Student stu2;
======================================================================================

  2.其次:
    在c++中如果用typedef的话,又会造成区别:
    struct   Student  
    {  
    int   a;  

    }stu1;//stu1是一个变量  

 
    typedef   struct   Student2  
    {  
    int   a;  

    }stu2;//stu2是一个结构体类型=struct Student  

 
    使用时可以直接访问stu1.a
    但是stu2则必须先   stu2 s2;
    然后               s2.a=10;
======================================================================================

  3 掌握上面两条就可以了,不过最后我们探讨个没多大关系的问题
    如果在c程序中我们写:
    typedef struct  
    {
    int num;
    int age;
    }aaa,bbb,ccc;

    这算什么呢?
    我个人观察编译器(VC6)的理解,这相当于
    typedef struct  
    {
    int num;
    int age;
    }aaa;
    typedef aaa bbb;
    typedef aaa ccc;
    也就是说aaa,bbb,ccc三者都是结构体类型。声明变量时用任何一个都可以,在c++中也是如此。但是你要注意的是这个在c++中如果写掉了typedef关键字,那么aaa,bbb,ccc将是截然不同的三个对象。

    //此处不是很理解。

   

 

 

    typedef struct和struct的区别:

 

 

    typedef struct tagMyStruct
    {
     int iNum;
     long lLength;
    } MyStruct;

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

 

 

    这语句实际上完成两个操作:

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

    struct tagMyStruct
    {  
     int iNum;
     long lLength;
    };

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

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

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

    typedef struct tagMyStruct MyStruct;

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

  2.

    typedef struct tagMyStruct
    {
     int iNum;
     long lLength;
    } MyStruct;

    在C中,这个申明后申请结构变量的方法有两种:

    (1)struct tagMyStruct 变量名

    (2)MyStruct 变量名

    在c++中可以有

    (1)struct tagMyStruct 变量名

    (2)MyStruct 变量名

    (3)tagMyStruct 变量名


转载自:http://www.cnblogs.com/qyaizs/articles/2039101.html

struct和typedef struct、enum与typedef enum、链表与结构体的区别

iOS不支持c++,只支持c和object c:   1 在C中定义一个结构体类型要用typedef:     typedef struct Student     {      int a;   ...
  • LVXIANGAN
  • LVXIANGAN
  • 2013年11月28日 10:46
  • 4666

C/C++中typedef struct 和 struct的差异

typedef struct应该算是C语言设计不是很合理的地方,下面这段解释还是比较清晰的。            注意在C和C++里不同     在C中, 定义一个结构体类型要用typedef:...
  • cc1949
  • cc1949
  • 2016年05月13日 09:19
  • 1471

typedef与using、struct与class的区别

typedef与using区别 定义一般类型的别名没区别,都是用来简化代码。如typedef string::size_type str_sz,将string::size_type类型命名为str_s...
  • github_35681219
  • github_35681219
  • 2016年10月06日 17:11
  • 995

C语言中struct和typedef struct的区别

最常见的一共有三种写法: struct{ int x; int y; }test1; struct test {int x; int y; }test1; typedef struc...
  • foreverhuylee
  • foreverhuylee
  • 2014年08月23日 16:52
  • 1448

struct与typedef struct

一、struct和typedef struct区别 1)在C中定义一个结构体类型要用typedef: typedef struct Student {  int a;  }Stu; // 写法1 于是...
  • u010525655
  • u010525655
  • 2014年10月02日 17:17
  • 2090

typedef struct与struct定义结构体

今天在定义结构体的时候发现typedef struct与struct定义结构体有一些不同之处: 结构也是一种数据类型, 可以使用结构变量, 因此,  象其它 类型的变量一样, 在使用结构变量时要先对其...
  • zaizai09
  • zaizai09
  • 2014年06月27日 22:12
  • 1549

typedef struct A{};和 typedef struct A{}A;有什么区别?

碰巧今天遇到同样的疑惑,在此试着解答,若有不当之处,望大家积极纠正。 首先,关于结构体补充一点,国内经典教材——谭浩强的《C++程序设计》中明确指出: 1、在C语言中,定义结构体变量格式为:s...
  • lynch0571
  • lynch0571
  • 2014年09月14日 23:13
  • 1406

typedef struct,自定义数据类型struct和类的区别

typedef struct,自定义数据类型struct和类的区别 引用大牛的 typedef struct和struct区别: 自定义数据结构类型: struct  类名{类体}; C语言...
  • chenjianqi0502
  • chenjianqi0502
  • 2016年01月08日 10:00
  • 2583

#define dPS struct s * typedef struct s * tPS

#define dPS struct s *  dps s  typedef struct s * tPS;    以上两种情况的意图都是要定义dPS 和 tPS 作为一个指向结构s指针。哪种方...
  • zhuge122
  • zhuge122
  • 2014年08月04日 19:32
  • 845

struct和typedef struct彻底明白了 && C语言结构体

转自:struct和typedef struct 分三块来讲述:   1 首先://注意在C和C++里不同     在C中定义一个结构体类型要用typedef:     typedef struct ...
  • zyh821351004
  • zyh821351004
  • 2015年08月24日 23:46
  • 11510
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struct和typedef struct区别
举报原因:
原因补充:

(最多只允许输入30个字)