
1. 结构类型定义
定义方法1:
Typedef struct LNode {
int data; // 数据域
struct LNode *next; // 指针域
} *LinkList;
定义方法2:
struct LNode {
int data; // 数据域
struct LNode *next; // 指针域
};
Typedef struct LNode *LinkList;
以上两个定义是等效的. * LinkList被定义为结构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被定义为结构LNode变量,即LnodeA是结构LNode变量名称.
结构体标准的定义方法
透明表是物理表的逻辑描述. 透明表中有许多字段,某些字段定义为PRIMARY KEY. 这些字段还包含DATA ELEMENT,用于描述语言属性和技术属性. DATA ELEMENT包含DOMAIN,它定义了数据类型和字段长度.
结构通常用于定义结构变量,具有临时数据存储,没有PRIMARY KEY,该结构包含COMPONENT而不是FIELD
2. 内部表中的属性分为三种: LINE TYPE,KEY和TABLE KIND.
LINE TYPE INTERNAL TABLE中的单独一行称为LINE TYPE,每行的结构相同.
KEY: 等效于中的主键. 排序时很有用,唯一或非唯一.
表类型: 标准,已排序,已哈希.
三种内部表的定义
标准表:
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 at itab into wa.C / C ++解释

结构定义
结构(结构)是由一系列相同或不同类型的数据(也称为结构)组成的数据集合.
结构效果
结构与其他类型的基本数据类型相同,例如int类型,char类型,但是可以将结构制成所需的数据类型. 为了方便将来使用.
在实际项目中,有很多结构. 开发人员经常使用结构来封装属性以形成新类型.
功能中结构的功能并不简单,其主要功能是封装. 封装的好处是可以重复使用. 让用户不必关心它是什么,只需按定义使用它即可.
结构大小和内存对齐
结构的大小不仅仅是增加结构元素,因为我们的主流计算机现在使用32位CPU. 占用4个字节的此类CPU胜于占用一个字. 节日更加高效,便捷. 因此,如果结构中每个成员的第一个地址是4的整数倍,则提取数据元素将相对更有效. 这是内存对齐的起源.
特定平台上的每个编译器都有其自己的默认“对齐因子”(也称为对齐系数). 程序员可以使用预编译的命令#pragma pack(n)更改此系数,n = 1,2,4,8,16,其中n是您要指定的“对齐系数”.
规则:
C ++中的结构
在C语言中,您可以定义结构类型并将多个相关变量包装为一个整体. 结构中的变量可以是相同,部分相同或完全不同的数据类型. 在C中,结构不能包含函数. 在面向对象的编程中,对象具有状态(属性)和行为. 状态存储在成员变量中,行为通过成员方法(函数)实现. C语言的结构只能描述对象的状态,而不能描述对象的行为. 在C ++中,考虑到从C到C ++过渡的连续性,结构得到了扩展. C ++结构可以包含函数. 这样,C ++结构也具有类函数. 与类不同,结构主体中包含的功能默认情况下是公共的,而不是私有的.
C ++控制台输出示例:
C ++中的结构和类之间的差异
在C ++中,类和结构之间只有两个区别,但没有区别.
这两个定义有什么区别?
typedef struct student
{
int num;
struct student *next;
}student;
struct student
{
int num;
struct student *next;
};
第二个struct学生定义了一个学生结构.
第一种是使用typedef重新定义struct学生结构的类型名称为Student,也就是说,struct student和student代表相同的事物,两者都是类型标识符,例如typedef intzhengshu;整数类型int重命名为zhengshu,其定义如下: int i;郑树一世是等效的.
结构是由基本数据类型组成并由标识符命名的变量的组合. 结构中可以使用不同的数据类型.
结构描述和结构变量定义
结构也是Turbo C中的一种数据类型. 可以使用结构变量,因此,像其他类型的变量一样,必须在使用结构变量之前对其进行定义.
定义结构变量的通用格式为:
struct 结构名
{
类型 变量名;
类型 变量名;
...
} 结构变量;
结构名称是结构的标识符,而不是变量名称.
类型是第2节中介绍的五种数据类型(整数,浮点,字符,指针和无值).

形成结构的每种类型的变量称为结构成员. 就像数组的元素一样,但是数组的元素可以通过下标访问,结构可以通过变量名访问.
以下是说明如何定义结构变量的示例.
struct string
{
char name[8];
int age;
char sex[4];
char depart[20];
float wage1,wage2,wage3;
}person;
此示例使用结构名称字符串定义结构变量person. 如果省略变量名person,它将成为结构的描述. 也可以使用描述的结构名称定义结构变量. 通过这种方式定义后,上面的示例变为:
struct string
{
char name[8];
int age;
char sex[4];
char depart[20];
float wage1,wage2,wage3;
};
struct string person;
如果需要以相同的形式定义多个结构变量,则此方法更方便. 首先说明结构,然后使用结构名称定义变量.
例如:
struct string Tianyr, Liuqi, ...;
如果省略结构名称,则称为未命名结构. 这种情况通常在函数内部发生. 使用这种结构时,上一个示例变为:
struct
{
char name[8];
int age;
char sex[4];
char depart[20];
float wage1,wage2,wage3;
} Tianyr, Liuqi;
结构是一种新的数据类型,因此结构变量可以像其他类型的变量一样进行分配和操作,只是结构变量使用成员作为基本变量.
结构成员表示为:
结构变量.成员名
如果将结构变量. 成员名称视为一个整体,则整体的数据类型与结构中成员的数据类型相同,因此可以像前面提到的变量一样使用.
下面的示例定义一个结构变量,其中每个成员从键盘接收数据,然后将结构中的浮点数求和,并显示操作结果. 请注意本示例中不同结构成员的访问.
结构是一种新的数据类型. 它也可以具有结构数组和结构指针.
1. 结构数组
结构数组是具有相同结构类型的变量的集合. 如果要定义班级中40名学生的姓名,性别,年龄和地址,则可以定义结构数组. 看起来像这样:
struct
{
char name[8];
char sex[4];
int age;
char addr[40];
}student[40];
也可以定义为:
struct string
{
char name[8];
char sex[4];
int age;
char addr[40];
};
struct string student[40];
应该指出,结构数组成员的访问基于作为结构变量的数组元素,其形式为:
结构数组元素.成员名
例如:
student[0].name student[30].age
实际上,结构数组等效于二维结构. 第一维是结构数组元素,每个元素是结构变量,第二维是结构成员.

注意: 结构数组的成员也可以是数组变量.
例如:
struct a
{
int m[3][5];
float f;
char s[20];
}y[4];
要访问结构a中结构变量y [2]的变量,可以将其写为y [2] .m [1] [4]
2. 结构指针
结构指针是指向结构的指针. 它由在结构变量的名称前添加*运算符定义. 例如,由前面描述的结构定义的结构指针如下:
struct string
{
char name[8];
char sex[4];
int age;
char addr[40];
}*student;
您也可以仅为结构描述省略结构指针的名称,然后使用以下语句定义结构指针.
struct string *student;
使用结构指针访问结构成员不同于使用结构变量访问结构成员的方式. 对结构成员的结构指针访问表示为:
结构指针名->结构成员
其中->是两个符号-和>的组合,就像箭头指向结构成员一样. 例如,要在上面定义的结构中为姓名和年龄分配值,您可以使用以下语句:
strcpy(student->name, Lu G.C); student->age=18;
实际上,student-> name是(* student).name的缩写.
应该指出,结构指针是指向结构的指针,即结构中第一个成员的首地址,因此结构指针应在使用前进行初始化,即结构的字节空间. 分配了整个结构的长度,可以按以下方式使用该功能已完成,如上例中所述:
student=(struct string*)malloc(size of (struct string));
(结构字符串)的大小自动获得字符串结构的字节长度. malloc()函数使用结构长度的大小定义一个内存区域,并将其欺诈地址作为结构指针返回.
注意:
嵌套结构是指一个结构构件可以包括另一种结构. Turbo C允许这种嵌套.
示例: 以下是嵌套结构
struct string
{
char name[8];
int age;
struct addr address;
} student;
其中: addr是另一个结构的结构名称结构体,必须首先执行,这意味着,
struct addr
{
char city[20];
unsigned lon zipcode;
char tel[14];
}
如果要为学生结构的成员地址结构中的邮政编码分配一个值,则可以编写:
student.address.zipcode=200001;
每个结构成员名称从最外层到最内层逐一列出,即嵌套结构成员的表达式为:
结构变量名.嵌套结构变量名.结构成员名
可以有许多嵌套结构,并且结构成员名称是最内部结构中不是结构的成员名称.
原始链接:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-162245-1.html
不吃你这套
和体现人道主义精神
毛主席的分析还是很透彻的
今天击沉一艘