[转载]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 变量名

时间: 2024-10-19 11:15:22

[转载]typedef struct和struct的区别的相关文章

typedef struct 和struct的区别

转载自:结构体定义 typedef struct 用法详解和用法小结 typedef是类型定义的意思.typedef struct 是为了使用这个结构体方便.具体区别在于使用时,是否可以省去struct这个关键字: 若struct node {}这样来定义结构体的话.在申请node 的变量时,需要这样写,struct node n; 若用typedef,可以这样写,typedef struct node{}NODE; .在申请变量时就可以这样写,NODE n; struct和typedef st

C++中struct与class的区别(转载)

很多初学者或者是想当然,或者是被网上的一些错误信息给误导,面试中问到class和struct区别时经常会说class可以继承而struct不可以继承,这是完全错误的.但在C#中,class与struct确实有这点区别(当然不止这一点).其实,在C++中,这两个关键词并没有大的区别,仅在细节上有些不同. 1. 字面上的区别 在字面上struct是structure的缩写,通常叫做“结构体”,在C语言里用于将多种数据.多个变量组织在一起,便于表达比较复杂的数据类型,在C++中为了兼容C语言保留了该关

.NET中struct与class的区别

在.net中的struct与class有很多相似之处,比如可以直接new,对于成员可以直接XX.field,以至于有不少程序员在用时,将其混在一起,分不清有何区别.这两者有何区别呢? 1.类型不同 我们先来看一段代码 static void Main(string[] args) { TypeDemo(); Console.ReadLine(); } // Reference type (because of 'class') class SomeClassRef { public Int32

Struct和Class的区别

C#的struct结构具有以下特点: 数据类型:结构是值类型,而类是引用类型.数据类型:向方法传递结构时,结构是通过传值方式传递的,而不是作为引用传递的.实例化:与类不同,结构的实例化可以不使用 new 运算符(未验证). 位置:结构可以写到class中,与方法并列:也可以写在class外,与类并列.构造函数:结构可以声明有参数的构造函数,但它们必须给所有的属性赋值(this.x=xx;this.y=yy;...). 若声明无参的构造函数,编译期间报错:编译器错误消息: CS0568: 结构不能

struct与class的区别(分别在c和c++中)

注:以下内容未经博主同意,不得转载. 解析: 这里有两种情况下的区别. (1)C的struct与C++的class的区别. (2)C++中的struct和class的区别. 在第一种情况下,struct与class有着非常明显的区别.C是一种过程化的语言,struct只是作为一种复杂数据类型定义,struct中只能定义成员变量,不能定义成员函数.例如下面的C代码片断: 1 struct Point 2 { 3 int x; // 合法 4 int y; // 合法 5 void print()

【C++】struct和class的区别

在C++中我们可以看到struct和class的区别并不是很大,两者之间有很大的相似性.那么为什么还要保留struct,这是因为C++是向下兼容的,因此C++中保留了很多C的东西. 一.首先看一下C中struct 1.struct的定义 struct A { int a; int b; //成员列表 }; 注意:因为struct是一种数据类型,那么就肯定不能定义函数,所以在面向c的过程中,struct不能包含任何函数.否则编译器会报错 面向过程的编程认为,数据和数据操作是分开的.然而当struc

struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系

在linux环境下,结构体struct sockaddr在/usr/include/linux/socket.h中定义,具体如下:typedef unsigned short sa_family_t;struct sockaddr {        sa_family_t     sa_family;    /* address family, AF_xxx       */        char            sa_data[14];    /* 14 bytes of protoc

c#中struct和class的区别

简单来说,struct是值类型,创建一个struct类型的实例被分配在栈上.class是引用类型,创建一个class类型实例被分配在托管堆上.但struct和class的区别远不止这么简单.本篇主要包括: ■ 概括来讲■ 从赋值的角度体验struct和class的不同■ 从参数传值角度体验struct和class的不同■ 从struct类型的struct类型属性和struct引用类型属性体验struct和class的不同■ 从构造函数体验struct和class的不同■ 从给类型成员赋初值体验s

C#详解struct和class的区别

简单来说,struct是值类型,创建一个struct类型的实例被分配在栈上.class是引用类型,创建一个class类型实例被分配在托管堆上.但struct和class的区别远不止这么简单. 概括来讲,struct和class的不同体现在: ● class是引用类型,struct是值类型,所有他有值类型和引用类型的区别特征,参见<C#值类型和引用类型的区别> ● class的实例创建是在托管堆上,struct实例创建是在栈上 ● class实例的赋值,赋的是引用地址,struct实例的赋值,赋

typedef struct与struct定义结构体

今天在定义结构体的时候发现typedef struct与struct定义结构体有一些不同之处: 结构也是一种数据类型, 可以使用结构变量, 因此,  象其它 类型的变量一样, 在使用结构变量时要先对其定义. 定义结构变量的一般格式为: struct 结构名 { 类型  变量名; 类型  变量名; ... } 结构变量; 结构名是结构的标识符不是变量名. 另一种常用格式为: typedef struct 结构名 { 类型  变量名; 类型  变量名; ... } 结构别名; 另外注意:  在C中,