我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

1.结构体类型定义

定义方式1:

Typedef struct  LNode {
   int  data;  // 数据域
   struct LNode   *next;  // 指针域
} *LinkList;

定义方式2:

struct  LNode {
   int  data;  // 数据域
   struct LNode   *next;  // 指针域

};
Typedef struct  LNode  *LinkList;

以上两个定义方式是等价的,是将 *LinkList 定 义为 struct LNode 类型,即 LinkList 被定义为一个类型名。这样就可以用 LinkList 来定义说明新的变量了,如:

LinkList  L;

即将 L 定义为 struct LNode 类型的指针变量。

2.结构体类型变量定义

定义方式1:

struct  LNode {
   int  data;  // 数据域
   struct LNode   *next;  // 指针域

}LnodeA;

定义方式2:

struct  LNode {
   int  data;  // 数据域
   struct LNode   *next;  // 指针域

};
struct  LNode LnodeA;

以上两个定义方式也是等价的,这样就将 LnodeA 定义为一个 struct LNode 类型的变量,即 LnodeA 为一个 struct LNode 类型的变量名。


结构体内标的定义方式

1.结构体,透明表区,DATA ELEMENT,DOMAIN

透明表是对一个物理表的逻辑描述,透明表里有许多字段,并且定义某些字段为 PRIMARY KEY,字段里又包含 DATA ELEMENT,用来描述语言属性和技术属性。DATA ELEMENT 中又包含 DOMAIN,它是定义数据类型和字段长度。

结构体一般是用来定义一个结构变量,有临时数据的储存,没有 PRIMARY KEY,结构体里包含 COMPONENT 而不是 FIELD

2.Internal table 中的属性分为三种 LINE TYPE ,KEY,TABLE KIND。

LINE TYPE 在 INTERNAL TABLE 里单独的一行叫 LINE TYPE,每一行的结构都一样。

KEY:相当于数据库里的主键。在排序的时候有用,UNIQUE 或 NON-UNIQUE。

TABLE KIND:分为 STANDARD,SORTED,HASHED。

三种类型的内表的定义

标准表:

DATA itab1 TYPE STANDARD TABLE OF scarr WITH NON-UNIQUE KEY carrid.

排序表:

DATA itab2 TYPE SORTED TABLE OF scarr WITH NON-UNIQUE KEY carrid.

哈希表:

DATA itab3 TYPE HASHED TABLE OF scarr WITH UNIQUE KEY carrid.

一般定义方法(标准表)

根据数据库表定义标准表

DATA itab4 TYPE TABLE OF scarr.

根据自建的结构变量定义标准表(最常用)

DATA: BEGIN OF wa,
    carrid TYPE scarr-carrid,
    carrnamen TYPE scarr-carrname,
    END OF wa.
DATA itab5 LIKE TABLE OF wa.

根据数据字典中的表类型定义标准表

DATA itab6 TYPE ztabtype00_1.

根据内表定义内表

DATA itab7 LIKE itab6.

根据内表定义结构

DATA wa1 LIKE LINE OF itab7.

3. 定义结构的方式

根据数据字典中的表或者结构来定义程序的结构变量(或类型)

types str1 type spfli.
data str2 type  sflight.

自定义程序中的结构变量(或类型)-最常见的

data: begin of wa,
carrid type spfli-carrid,
com(10) type c,
end of wa.

根据内表定义结构

data wa like line of itab.

注:根据数据库表定义的一定是结构

同名字段的赋值(重要)

Move-corresponding A  to  B.

read 是读取内表的一条数据

read table itab like table of wa.

读一内表的多条数据应用 loop

loop at itab into wa.

C/C++ 语言中的解释

结构体定义

结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。

结构体作用

结构体和其他类型基础数据类型一样,例如 int 类型,char 类型 只不过结构体可以做成你想要的数据类型。以方便日后的使用。 

在实际项目中,结构体是大量存在的。研发人员常使用结构体来封装一些属性来组成新的类型。  

结构体在函数中的作用不是简便,其最主要的作用就是封装。封装的好处就是可以再次利用。让使用者不必关心这个是什么,只要根据定义使用就可以了。

结构体的大小与内存对齐

结构体的大小不是结构体元素单纯相加就行的,因为我们现在主流的计算机使用的都是 32Bit 字长的 CPU,对这类型的 CPU 取 4 个字节的数要比取一个字节要高效,也更方便。所以在结构体中每个成员的首地址都是4的整数倍的话,取数据元素是就会相对更高效,这就是内存对齐的由来。

每个特定平台上的编译器都有自己的默认"对齐系数"(也叫对齐模数)。程序员可以通过预编译命令 #pragma pack(n),n=1,2,4,8,16 来改变这一系数,其中的n就是你要指定的"对齐系数"。  

规则:

  
  • 1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,个数据成员放在 offset 为 0 的地方,以后每个数据成员的对齐按照 #pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。  
  • 2、结构(或联合)的整体对齐规则:在数据成员完成各自对齐之后,结构(或联合)本身也要进行对齐,对齐将按照< span class="marked">#pragma pack 指定的数值和结构(或联合)更大数据成员长度中,比较小的那个进行。  
  • 3、结合1、2颗推断:当#pragma pack的n值等于或超过所有数据成员长度的时候,这个n值的大小将不产生任何效果。

C++ 中的结构体

在 C 语言中,可以定义结构体类型,将多个相关的变量包装成为一个整体使用。在结构体中的变量,可以是相同、部分相同,或完全不同的数据类型。在 C 语言中,结构体不能包含函数。在面向对象的程序设计中,对象具有状态(属性)和行为,状态保存在成员变量中,行为通过成员方法(函数)来实现。C 语言中的结构体只能描述一个对象的状态,不能描述一个对象的行为。在 C++ 中,考虑到 C 语言到 C++ 语言过渡的连续性,对结构体进行了扩展,C++ 的结构体可以包含函数,这样,C++ 的结构体也具有类的功能,与class 不同的是,结构体包含的函数默认为 public,而不是 private。  

C++ 控制台输出例子:

 

实例

#include <cstdlib>  #include <iostream>  //定义结构体   using namespace std;  struct point  {   //包含两个变量成员  int x;   int y;  };   int main(int argc, char *argv[])  {   struct point pt;  pt.x=1;  pt.y=2;  cout<<pt.x<<endl<<pt.y<<endl; return EXIT_SUCCESS; }
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为1000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设网站改版百度优化、名注册、主机空间、手机网站建设公众号开发小程序制作、网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线: 13820372851,我们会详细为你一一解答你心中的疑难。项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13820372851

上班时间

周一到周五

公司电话

022-26262675

二维码
线
在线留言