`
值得深入
  • 浏览: 14880 次
  • 性别: Icon_minigender_1
  • 来自: 纠结的后空翻
最近访客 更多访客>>
社区版块
存档分类
最新评论

struct和typedef struct 区别

阅读更多
分三块来讲述:
1 首先:
      在C中定义一个结构体类型要用typedef:
       
typedef struct Student
        {
            int a;
        }Stu;

于是在声明变量的时候就可:Stu stu1;
如果没有typedef就必须用struct Student stu1;来声明
这里的Stu实际上就是struct Student的别名。
另外这里也可以不写Student(于是也不能struct Student 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是一个结构体类型

使用时可以直接访问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将是截然不同的三个对象。
分享到:
评论
1 楼 songfantasy 2011-07-01  
不错,挺好。学习了。

相关推荐

    struct和typedef struct区别

    "struct和typedef struct的区别" 在编程语言中,struct和typedef struct都是用来定义结构体类型的,但它们之间存在一些关键的区别。 首先,在C语言中,定义一个结构体类型需要使用typedef关键字,例如: ```c ...

    c++笔记struct和typedef struct彻底明白了

    最后,让我们来探讨 typedef struct 和 struct 的区别。typedef struct tagMyStruct { int iNum; long lLength; } MyStruct;。这里的 tagMyStruct 是标识符,MyStruct 是变量类型(相当于 int、char 等)。这个语句...

    C_C++中typedef_struct和struct的用法

    在 C/C++ 中,struct 和 typedef struct 是两个常用的数据类型定义方式,它们之间有着微妙的区别。本文将详细介绍 struct 和 typedef struct 的用法,并通过实例代码演示其差异。 首先,让我们来了解一下 struct 的...

    typedef struct 与 struct 的区别及初始化

    总结一下,`typedef struct` 和 `struct` 的主要区别在于,`typedef` 提供了类型别名,使得代码更易读且不需要每次使用 `struct` 关键字。而结构体初始化则涉及到成员变量的初始赋值,可以使用初始化列表来实现。在...

    typedef struct 用法详解和用法小结

    在C语言中,typedef是一个关键字,其主要作用是为已经存在的数据类型定义一...这是typedef与#define预处理命令的一个重要区别,后者会进行简单的文本替换。在实际的编程实践中,应根据具体情况选择合适的类型定义方式。

    C/C++语法知识:typedef struct 用法详解

    在本文中,我们将详细解释 typedef struct 的用法和原理,并讨论它与 struct 的区别。 1. typedef 的基本概念 typedef 是 C 语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型...

    typedef struct与struct的区别

    由于对typedef理解不够,因此从网上摘录了一些资料。比较详细和全面

    CC中typedefstruct和struct的用法.doc

    CC中typedefstruct和struct的用法.doc

    CC++中typedefstruct和struct的用法.doc

    总结来说,`typedef struct` 和直接使用 `struct` 的主要区别在于,前者提供了类型别名,使得代码更加简洁,特别是在频繁使用某结构体类型时。而在定义结构体变量时,两者需要区分使用,避免混淆类型和变量。理解...

    systemverilog中struct和union的一种用法

    SystemVerilog 中 struct 和 union 的应用 SystemVerilog 是一款功能强大的硬件描述语言,广泛应用于 FPGA 和 ASIC 设计中。其中,struct 和 union 是两种常用的数据结构,它们可以用来组织和存储数据。本文将介绍 ...

    structtype&def_struct

    在C和C++中,`struct`的使用方式略有不同,特别是在与`typedef`关键字结合使用时。 1. `struct`定义: 在C语言中,定义一个结构体类型通常需要使用`typedef`关键字来创建一个别名,使得后续的声明更简洁。例如: ``...

    C/C++中的结构体声明: struct 和 typedef struct 用法

    无 TYPEDEF 的声明方式 首先常规结构体的定义,你肯定已经十分清楚: struct Person{ int age; string name; }; 这里Person是你声明的这个结构体的名字,即一种类型,如同int之类的。 如果你想声明几个Person的...

    xml和struct之间的相互转换

    typedef struct { char* name; int age; struct { char* street; char* city; } address; } Person; ``` 在“xml和struct之间的相互转换”中,程序`XmltoStruct`实现了从XML文件解析出数据并填充到struct中,...

    C++中typedef 及其与struct的结合使用

    总之,`typedef` 和 `struct` 的结合使用有助于创建清晰的代码,提高代码可读性,减少类型名称的冗长,同时避免了`#define`可能导致的一些问题。在编写 C++ 代码时,掌握它们的正确使用方式是非常重要的。

    typedef与define的区别

    在C/C++语言中,typedef和define是两个常用的关键字,虽然它们都可以用来定义别名,但是它们的用法和特点却有很大的区别。 一、typedef的用法 typedef是C/C++语言中的一个关键字,用于定义一个标识符的别名。它是...

    关于typedef和struct对比

    为什么要提出typedef的用法,因为相对于struct 结构体使用起来更方便。下面就是他们之间的对比: struct结构体 #include"stdio.h" struct Student { int sid; char name [100]; char sex; } int main(){ ...

    typedef_struct与struct之间的区别

    总结来说,`typedef struct`和`struct`之间的主要区别在于: 1. `typedef struct` 提供了一个新的类型别名,使得在声明结构体变量和指针时可以省略`struct`关键字,使得代码更易读。 2. 使用`typedef`定义的类型...

    typedef和define的区别

    typedef 和 define 的区别 typedef 和 define 是 C/C++ 语言中的两个重要概念,它们都是用于定义标识符或常量的,但它们之间存在着一定的区别。 首先,typedef 用于定义一个标识符或关键字的别名,它是语言编译...

    zhsy.rar_InitStack_pop_typedef struct st

    typedef struct StackNode { ElemType data //存放数据 struct StackNode * next //指向下一个结点 }StackNode typedef struct { StackNode * top // 栈顶指针 }LinkStack 实现下列操作: void ...

Global site tag (gtag.js) - Google Analytics