C19第10章 用户自定义数据类型
- 格式:ppt
- 大小:489.50 KB
- 文档页数:40
7、⽤户⾃定义数据类型1、结构体 1.1、结构体的定义 在实际的处理对象中,有许多信息是由多个不同类型的数据组合在⼀起进⾏描述,⽽且这些不同类型的数据是互相联系组成了⼀个有机的整体。
此时,就要⽤到⼀种新的构造类型数据-----结构体,简称结构。
结构体的使⽤为处理复杂的数据结构(如动态数据结构等)提供了有效的⼿段,⽽且,它们为函数间传递不同类型的数据提供了⽅便。
结构体和数组⼀样,也是⼀种构造型数据类型,是⽤户⾃定义的新数据类型,在结构体中可以包含若⼲个不同数据类型和不同意义的数据项(当然也可以相同),从⽽使这些数据项组合起来反映某⼀个信息。
结构体是⼀种构造数据类型,结构体的语法如下:Struct 结构体名{数据类型成员名1;数据类型成员名2;数据类型成员名3;….数据类型成员名n;}; 在花括号中的内容也称为“成员列表”或“域表”。
其中每个成员的命名规则与变量名相同,成员之间⽤“;”作为结束符,整个结构的定义也⽤“;”作为结束符,数据类型可以是基本变量类型、数组类型、结构体类型、联合体类型或枚举类型等。
先定义结构体类型,再定义结构体变量。
结构体中的成员名可以与程序中的变量名相同,⼆者并不代表同⼀对象,编译程序可以⾃动对它们进⾏区分。
定义结构体类型时不会分配空间,只有⽤结构体类型定义变量时才会分配空间。
总结⼀下结构体类型的特点: (1)、结构体类型是⽤户⾃⾏构造的 (2)、它由若⼲不同的基本数据类型的数据构成 (3)、它属于C语⾔的⼀种数据类型,与整形、浮点型相当。
因此,定义它是不分配空间,只有⽤它定义变量时才分配空间。
1.2、结构体变量的声明、使⽤及初始化 1.2.1、结构体变量的声明 在定义了结构体类型后,就可以声明结构体类型的变量。
有下⾯⼏种形式: (1)、先定义结构体类型,再定义变量名Struct 结构体名{类型成员名;类型成员名;};Struct 结构体名变量名1,变量名2…;这⾥的结构体名是结构体的标识符,不是变量名。
用户自定义的数据类型、默认值、规则一、用户自定义的数据类型用户自定义数据类型可看做是系统数据类型的别名。
在多表操作的情况下,当多个表中的列要存储相同类型的数据时,往往要确保这些列具有完全相同的数据类型、长度和为空性(数据类型是否允许为空)。
例如,对于student数据库中表student、grade和course三张表的xh,kh两个列必须具有相同的数据类型。
创建用户自定义数据类型时首先应考虑如下三个属性:(1)数据类型名称(2)新数据类型所依据的系统数据类型(又称为基类型)(3)为空性如果为空性未明确定义,系统将依据数据库或连接的ANSI NULL 默认设置进行指派。
1、创建用户自定义数据类型的方法如下:(1)利用企业管理器定义(2)利用SQL命令定义数据类型在SQL Server中,通过系统存储过程实现用户数据类型的定义。
语法格式如下:sp_addtype [@typename=] type, /*自定义类型名称*/[@phystype=] system_data_type /*基类型*/[,[@nulltype=] null_type /*为空性*/[,[@owner=] owner_name] /*创建者或所有者*/ 其中:type:用户自定义数据类型的名称。
System_data_type:用户自定义数据类型所依据的基类型。
如果参数中嵌入有空格或标点符号,则必须用引号将该参数引起来。
null_type:指明用户自定义数据类型处理空值的方式。
取值可为’NULL’、’NOT NULL’、’NONULL’三者之一(注意:必须用单引号引起来)。
如果没有用sp_addtype显式定义null_type,则将其设置为当前默认值,系统默认值一般为’NULL’。
例:定义学号字段的数据类型sp_addtype ’student_xh’,’char(4)’,’not null’2、删除用户自定义数据类型(1)利用企业管理器(2)利用SQL语句语法格式如下:sp_droptype [@typename=] type其中type为用户自定义数据类型的名称,应用单引号括起来。
用户自定义的数据类型、默认值、规则一、用户自定义的数据类型用户自定义数据类型可看做是系统数据类型的别名。
在多表操作的情况下,当多个表中的列要存储相同类型的数据时,往往要确保这些列具有完全相同的数据类型、长度和为空性(数据类型是否允许为空)。
例如,对于stude nt数据库中表stude nt、grade和c ourse三张表的xh,kh两个列必须具有相同的数据类型。
创建用户自定义数据类型时首先应考虑如下三个属性:(1)数据类型名称(2)新数据类型所依据的系统数据类型(又称为基类型)(3)为空性如果为空性未明确定义,系统将依据数据库或连接的A N SI NULL 默认设置进行指派。
1、创建用户自定义数据类型的方法如下:(1)利用企业管理器定义(2)利用SQL命令定义数据类型在SQL Server中,通过系统存储过程实现用户数据类型的定义。
语法格式如下:sp_addt ype [@typenam e=] type, /*自定义类型名称*/ [@phystyp e=] system_data_t ype /*基类型*/[,[@nulltyp e=] null_ty pe /*为空性*/[,[@owner=] owner_n ame] /*创建者或所有者*/其中:type:用户自定义数据类型的名称。
System_data_t ype:用户自定义数据类型所依据的基类型。
如果参数中嵌入有空格或标点符号,则必须用引号将该参数引起来。
null_ty pe:指明用户自定义数据类型处理空值的方式。
取值可为’NULL’、’NOT NULL’、’NONULL’三者之一(注意:必须用单引号引起来)。
如果没有用sp_addty pe显式定义null_t ype,则将其设置为当前默认值,系统默认值一般为’NULL’。
简述自定义数据类型的方法。
自定义数据类型是编程中的一个重要概念,是指通过编程语言的方式,用户自己定义一种数据类型来满足自己的需求。
自定义数据类型可以更好地封装和组织程序,使其更加简洁和易于理解,也可以提高程序的可维护性和可扩展性。
本文将介绍自定义数据类型的定义、设计、实现和使用方法,希望能够帮助读者更好地理解和使用自定义数据类型。
自定义数据类型是指在编程中,用户自己定义一种新的数据类型,该数据类型具有一些特定的属性和方法,与程序预定义的数据类型不同。
自定义数据类型包括结构体、枚举、类和接口等,每个类型都有其特定的用途和适用范围。
1. 结构体结构体是一种包含多个不同数据类型的数据结构,可以看作是一个自定义的复合数据类型。
结构体可以定义一组相关的属性,并访问这些属性,帮助更好地组织数据,使其更易于使用。
结构体的定义一般包括在代码中定义一个新的数据类型,例如:struct Person {char name[20];int age;float height;};该结构体包含三个属性:一个字符数组name表示人名,一个整型age表示年龄,一个浮点型height表示身高。
这个结构体的名称为Person,我们可以通过定义Person类型的变量来使用该类型。
下面的代码定义了一个Person类型的变量p,初始化了其属性值,并打印了其属性值:Person p;strcpy(, "Tom");p.age = 24;p.height = 1.80f;printf("Name: %s, Age: %d, Height: %f\n", , p.age, p.height);2. 枚举枚举是一种用户自定义的数据类型,它包含一组有限的命名常量。
枚举类型用于定义程序中使用的有限取值集合,并使代码更具可读性和可维护性。
枚举类型的定义一般在代码中定义一个新的数据类型,例如:enum Gender {Male,Female,Unknown};Gender g = Male;printf("Gender: %d\n", g); // 输出0,表示Male3. 类类是一种面向对象编程中常用的自定义数据类型,它具有一组属性和方法,用于封装和组织程序。
自定义数据类型结构体结构体是程序员在程序中自定义的一种数据类型,在说明和使用之前必须先定义它,也就是构造它。
定义一个结构体的语法格式如下:Struct 结构体类型名{成员1的数据类型名成员1名称;成员2的数据类型名成员2名称;..成员n的数据类型名成员n名称;}结构体变量表={成员初始化};注意成员可以由若干个不同的数据类型组成,每个成员也可以是结构体,即可以嵌套定义。
例如:Struct student{Long num;Char name;Char sex;Float score;};已经定义的某种结构体类型可以视为一种标准的数据类型,它的使用方法与标准数据类型使用方法相同,可以用来定义变量、数组、指针。
结构体变量说明结构体变量的说明在程序的变量说明部分给出,一般在结构定义之后,它的语法格式如下:Struct 结构类型名结构变量名表;例如:Struct student stu;指出了结构变量stu是student类型的变量,它由四个成员组成,每个成员的数据类型和名字都与student结构定义中给出的相同。
系统完全按照结构定义时制定的内存模式为结构变量分配内存空间。
可以在定义结构体类型的同时给出结构体变量。
Struct student{Long num;Cha name[20];Cha sex;Float score;}stu1,stu2;这种形式与前面给出的结构定义和结构说明分开处理效果相同。
结构体成员访问结构体成员是通过结构体变量名和成员名进行访问的,不能把他作为一个整体进行访问。
其访问格式如下:结构体变量名.成员名其中运算符.是成员访问运算符,其运算级别是最高的,和圆括号运算符()、下标运算符[]是同一级别的。
如果结构体成员是指针变量,则访问格式为:*如果某个结构体变量的成员数据类型又是一个结构体,则访问方式为:外层结构体变量名.外层成员名.内层成员名可以在定义结构体变量的同时对结构体变量初始化。