结构体定义的几种常见方式

1、最常用定义方式:定义结构体data,此时结构体相当于一个类型,比如int,如需使用此结构体,方法同int

struct data
{
????char?aa;
????char?bb;
????char?cc;
????int?dd;
};
?struct data sum1, sum2;

2、定义结构体data同时,定义需要使用的结构体变量sum1,sum2。如后面再需要定义结构体变量,方法同1

struct data
{
????char aa;
????char bb;
????char cc;
????int dd;
}sum1, sum2;
????struct data sum3;

3、定义结构体时,结构体名称缺省,同时定义结构体变量sum1,sum2。但后面不可再定义结构体变量!

struct
{
????char aa;
????char bb;
????char cc;
????int dd;
}sum1, sum2;
????struct sum3;? <-? 编译器报错

4、使用typedef 定义结构体,定义结构体data时,使用typedef,此种形式几乎不使用,再定义结构体变量时,仍需加struct,否则编译器报错!

typedef struct data

{
????char aa;
????char bb;
????char cc;
????int dd;
};
????struct data sum3;

5、使用typedef定义结构体同时,给data结构体别名DATA,后续定义可不用使用struct data,直接使用DATA即可。

typedef struct data
{
????char aa;
????char bb;
????char cc;
????int dd;
}DATA;
????struct data sum3; <- 可用,但不推荐
????DATA sum1; <- 最常用方式

6、使用typedef定义结构体时,省掉结构体第一个别名data,直接在后面加DATA,使用方法同5。

typedef struct
{
????char aa;
????char bb;
????char cc;
????int dd;
}DATA;
????DATA?sum3;

7.链表中的使用方法

typedef struct data
{
        int value;
        struct data *next;//struct必须要加
}DATA;
????DATA?sum3;

原文链接:https://blog.csdn.net/ziguo2010/article/details/79897327

原文地址:https://blog.51cto.com/14233078/2459139

时间: 2024-08-28 23:45:44

结构体定义的几种常见方式的相关文章

C语言-结构体定义的几种方式

若struct后面接的是名字,则其为该结构体的名称.第一种是最基本的结构体定义,其定义了一个结构体A. struct A //第一种 { int a; }; 第二种则是在定义了一个结构体B的同时定义了一个结构体B的变量m. struct B //第二种 { int b; }m; 第三种结构体定义没有给出该结构体的名称,但是定义了一个该结构体的变量n,也就是说,若是想要在别处定义该结构体的变量是不行的,只有变量n这种在定义结构体的同时定义变量才行. struct //第三种 { int c; }n

C语言结构体定义的几种方法

什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据结构.结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问. 结构体的定义: C语言结构体类型的定义模板大概为: struct 类型名{ 成员表列 } 变量; 在成员表列中可以是几种基本数据类型,也可以是结构体类型. struct 类

c语言结构体定义的几种形式

转自https://blog.csdn.net/ziguo2010/article/details/79897327 1.最常用定义方式:定义结构体data,此时结构体相当于一个类型,比如int,如需使用此结构体,方法同int struct data{    char aa;    char bb;    char cc;    int  dd; }; struct data sum1, sum2; 2.定义结构体data同时,定义需要使用的结构体变量sum1,sum2.如后面再需要定义结构体变

数据结构-单链表-结构体定义

单链表,用于存储逻辑关系为 "一对一" 的数据,与顺序表不同,链表不限制数据的物理存储状态,换句话说,使用链表存储的数据元素,其物理存储位置是随机的. 结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻. 例如{1,2,3}: 线性表的链式表示又称为非顺序映像或链式映像. 各结点由两个域组成: 数据域:存储元素数值数据 指针域:存储直接后继结点的存储位置 头指针是指向链表中第一个结点的指针 首元结点是指链表中存储第一个数据元素a1的结点 头结点是在链表的首元结点之前

结构体定义 typedef struct 用法详解和用法小结

typedef是类型定义的意思.typedef struct 是为了使用这个结构体方便.具体区别在于:若struct node {}这样来定义结构体的话.在申请node 的变量时,需要这样写,struct node n;若用typedef,可以这样写,typedef struct node{}NODE; .在申请变量时就可以这样写,NODE n;区别就在于使用时,是否可以省去struct这个关键字. 第三篇:struct和typedef struct 分三块来讲述:1 首先:在C中定义一个结构体

关于物体 &#39;固有类别&#39; 与 &#39;实际使用类别&#39; 分离的情况,结构体定义方法

在面向接口.面向对象编程的过程中,会遇到实际物体类别与定义类别相分离的情况. 例如,我们有三种物体,他们的固有类别分别为: TYPEA,TYPEB,TYPEC.在我们实际使用过程中,我们会根据不同的情况将他们分成 2 组: Group1,Group2. 那么,我们在定义结构体和物理类别时,需要注意对 Group 进行定义.定义物体具体属性和结构体如下: #define TYPEA (0x01UL << 0) #define TYPEB (0x01UL << 1) #define T

C#中结构体定义并转换字节数组

最近的项目在做socket通信报文解析的时候,用到了结构体与字节数组的转换:由于客户端采用C++开发,服务端采用C#开发,所以双方必须保证各自定义结构体成员类型和长度一致才能保证报文解析的正确性,这一点非常重要. 首先是结构体定义,一些基本的数据类型,C#与C++都是可以匹配的: [StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct Head { public

C语言结构体初始化的四种方法

定义 struct InitMember{    int first:    double second:    char* third:    float four;}; 方法一:定义时赋值 struct InitMember test = {-10,3.141590,"method one",0.25}: 需要注意对应的顺序,不能错位.方法二:定义后逐个赋值 struct InitMember test: test.first = -10;test.second = 3.14159

ASP.NET页面间传值的几种常见方式

(新建项目WebApplication,添加新项:源页面Default.aspx和目标页面WebForm1.aspx. 在源页面Default.aspx中添加两个TextBox, ID分别为Nametb和Emailtb,两个Label;在WebForm1.aspx中添加两个Label,ID分别为lname和lemail,用于显示TextBox传过来的值.) 1.使用QueryString 使用QueryString在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它