收藏 分销(赏)

c语言结构体与共同体.pptx

上传人:精*** 文档编号:4610156 上传时间:2024-10-07 格式:PPTX 页数:38 大小:171.92KB
下载 相关 举报
c语言结构体与共同体.pptx_第1页
第1页 / 共38页
c语言结构体与共同体.pptx_第2页
第2页 / 共38页
c语言结构体与共同体.pptx_第3页
第3页 / 共38页
c语言结构体与共同体.pptx_第4页
第4页 / 共38页
c语言结构体与共同体.pptx_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、第八章第八章 结构体与共用体结构体与共用体1.1.结构体结构体(structstruct)2.2.共同体共同体(unionunion)3.3.结构体与共用体小结结构体与共用体小结4.4.枚举类型枚举类型(enum)(enum)5.5.typedeftypedef定义类型定义类型结构体(结构体(structstruct)1.1.结构体的概念结构体的概念2.2.结构体数组结构体数组3.3.结构体指针结构体指针结构体的概念结构体的概念1.1.结构体的定义结构体的定义2.2.结构体变量的存储特点结构体变量的存储特点3.3.结构体变量的引用结构体变量的引用4.4.结构体的初始化结构体的初始化结构体的定义

2、结构体的定义1 1、含义:不同类型数据的集合。、含义:不同类型数据的集合。2 2、功能:用于描述一个、功能:用于描述一个“概念概念”。(或记录)。(或记录)如:如:num name sex age score addrnum name sex age score addr 10010 LiFun M 18 87.5 BeiJing 10010 LiFun M 18 87.5 BeiJing3 3、定义方法:、定义方法:方法一:在定义结构体类型的同时,直接给出结构体变量。方法一:在定义结构体类型的同时,直接给出结构体变量。如:如:struct struct 结构体名结构体名 结构体成员变量的定义

3、;结构体成员变量的定义;变量名变量名1 1,变量名,变量名2 2,.,变量名,变量名n n;方法二:先给出结构体类型的定义,再定义结构体变量。方法二:先给出结构体类型的定义,再定义结构体变量。如:如:struct struct 结构体名结构体名 结构体成员变量的定义;结构体成员变量的定义;例:例:;struct struct 结构体名结构体名 变量名变量名1 1,变量名,变量名2 2,.,变量名,变量名n n;4 4、要点:要点:方法二:方法二:struct student struct student int number;int number;char name20;char name20

4、;char sex;char sex;int age;int age;float score;float score;char addr30;char addr30;struct student student1,student2;struct student student1,student2;方法一:方法一:struct student struct student int number;int number;char name20;char name20;char sex;char sex;int age;int age;float score;float score;char addr

5、30;char addr30;student1,student2;student1,student2;请注意两种方法的不同特点:请注意两种方法的不同特点:1 1、“;”的用法;的用法;2 2、方法二可以用一个、方法二可以用一个*.h.h文件来存储结构体的定义。文件来存储结构体的定义。4 4、要点:、要点:结构体名(结构体名(struct)struct):用于标识一种新的数据类型,用于标识一种新的数据类型,即结构体类型,可以省略。即结构体类型,可以省略。注意区分结构体类型与基本数注意区分结构体类型与基本数 据类型的不同,它是据类型的不同,它是复合数据复合数据 类型。类型。结构体成员变量与普通变量

6、的结构体成员变量与普通变量的 定义一样,它还可以是结构体定义一样,它还可以是结构体 变量。变量。struct datestruct dateint month,day,year;int month,day,year;struct studentstruct student int num;int num;char name20;char name20;char sex;char sex;int age;int age;struct date birthday;struct date birthday;char addr30;char addr30;student1,student2;stude

7、nt1,student2;结构体变量的存储特点结构体变量的存储特点如:如:struct student struct student int number;int number;char name5;char name5;char sex;char sex;int age;int age;float score;float score;char addr10;char addr10;student1,student2;student1,student2;struct studentstruct student所占存储空间的所占存储空间的大小为:大小为:各成员变量所占存储单元字节数各成员变量所占

8、存储单元字节数之和。之和。s sizeof(student)izeof(student)student1.numberstudent1.numberstudent1.name0student1.name0.student1.name4student1.name4student1.sexstudent1.sexstudent1.agestudent1.agestudent1.scorestudent1.scorestudent1.addr0student1.addr0.student1.addr9student1.addr9student2.numberstudent2.numberstuden

9、t2.name0student2.name0.student2.name4student2.name4student2.sexstudent2.sex.student1student1student2student2结构体类型变量的引用结构体类型变量的引用一、原则:通过结构体的成员来引用结构体变量。一、原则:通过结构体的成员来引用结构体变量。二、成员的引用方法为二、成员的引用方法为:结构体变量名结构体变量名.成员名成员名三、要点:三、要点:1.1.结构体变量不能整体输入输出结构体变量不能整体输入输出,只能对它的成员进行操作。只能对它的成员进行操作。如如:student1.num;student

10、1.num;2.2.如果成员本身又是一个结构体类型如果成员本身又是一个结构体类型,则要使用若干个成员运算符则要使用若干个成员运算符,逐级找到最底层的成员。逐级找到最底层的成员。如如:student1.birthday.day:student1.birthday.day3.3.成员变量可以象一般的变量一样进行各种运算成员变量可以象一般的变量一样进行各种运算,只是在运算时要只是在运算时要加上加上“.”运算符。运算符。4.4.可以引用成员的地址。可以引用成员的地址。结构体变量的初始化结构体变量的初始化一、只可以给主函数中或外部存储类别和静态存一、只可以给主函数中或外部存储类别和静态存储类别的结构体变

11、量、数组赋初值。储类别的结构体变量、数组赋初值。1 1、对外部存储类型的初始化对外部存储类型的初始化.2 2、对静态存储类型的结构体变量进行初始化对静态存储类型的结构体变量进行初始化二、给结构体变量赋初值不能跨越前面的成员而二、给结构体变量赋初值不能跨越前面的成员而只给后面的成员变量赋值。只给后面的成员变量赋值。例例exp8_1:exp8_1:对外部存储类型的初始化对外部存储类型的初始化.#include#include struct studentstruct student long number;long number;char name20;char name20;char sex;i

12、nt age;char sex;int age;float score;float score;char addr30;char addr30;a a=99641,=99641,”Li PingLi Ping”,M M,56,56,”Tianjin StreetTianjin Street”;main()main()printf(printf(“No.:%ldnname:%snsex:%cnaddress:%snNo.:%ldnname:%snsex:%cnaddress:%sn”,a.num,a.name,a.sex,a.addr);a.num,a.name,a.sex,a.addr);例例

13、exp8_2:exp8_2:对静态存储类型的结构体变量进行初始化对静态存储类型的结构体变量进行初始化.#include#include main()main()static struct studentstatic struct student long number;long number;char name20;char name20;char sex;char sex;int age;int age;float score;float score;char addr30;char addr30;a a=99641,=99641,”Li PingLi Ping”,M M,56,56,”Ti

14、anjin StreetTianjin Street”;printf(printf(“No.:%ldnname:%snsex:%cnaddress:%snNo.:%ldnname:%snsex:%cnaddress:%sn”,a.num,a.name,a.sex,a.addr);a.num,a.name,a.sex,a.addr);结构体数组结构体数组1.1.结构体数组的含义:结构体数组的含义:数组元素是结构体类型数据的数组称为结构体数组。数组元素是结构体类型数据的数组称为结构体数组。2.2.结构体数组的定义结构体数组的定义3.3.结构体数组的初始化结构体数组的初始化4.4.结构体数组的应用举

15、例结构体数组的应用举例结构体数组的定义结构体数组的定义一、含义:若干个相同的结构体类型变量组成的数据集合。一、含义:若干个相同的结构体类型变量组成的数据集合。二、定义方法:二、定义方法:struct struct 结构体名结构体名 例如:例如:结构体成员定义;结构体成员定义;数组名数组名 元素个数元素个数;三、结构体数组的使用方法三、结构体数组的使用方法1 1、通过数组的下标(或指向数组的指针)来访问结构体变量。、通过数组的下标(或指向数组的指针)来访问结构体变量。2 2、再通过结构体变量的成员实现结构体数据的访问。、再通过结构体变量的成员实现结构体数据的访问。形式为:形式为:数组名数组名 下

16、标下标.成员名成员名如:如:stu2.namestu2.name=“Wang YingWang Ying”;struct studentstruct student long number;long number;char name20;char name20;char sex;char sex;int age;int age;float score;float score;char addr30;char addr30;struct student struct student stu3;stu3;struct studentstruct student long number;long n

17、umber;char name20;char name20;char sex;char sex;int age;int age;float score;float score;char addr30;char addr30;stu3;stu3;结构体数组的物理含义:结构体数组的物理含义:表示实体(或记录)的个数。表示实体(或记录)的个数。1 1、含义:在定义结构体数组时完成数组元素的赋值、含义:在定义结构体数组时完成数组元素的赋值2 2、方法:与一般数组元素赋初值的方法相同。、方法:与一般数组元素赋初值的方法相同。struct studentstruct student long number

18、;long number;char name20;char name20;char sex;char sex;int age;int age;float score;float score;char addr30;char addr30;a3 a3=99641,=99641,”Li PingLi Ping”,M M,56,56,”Tianjin StreetTianjin Street”,99341,99341,”Zhang FanZhang Fan”,F F,78,78,”Beijing RoadBeijing Road”,99441,99441,”Ren ZhongRen Zhong”,M

19、 M,34,34,”Shenyang RoadShenyang Road”;结构体数组的初始化结构体数组的初始化例例exp8_3:exp8_3:对候选人得票的统计程序对候选人得票的统计程序,设有三个候选人设有三个候选人,每次输入一个每次输入一个候选人的名字候选人的名字,最后统计出每个候选人的得票的结果最后统计出每个候选人的得票的结果.#include#include struct personstruct person char name20;int count;char name20;int count;leader3 leader3=“LiLi”,0,0,”ZhangZhang”,0,0,

20、”FunFun”,0;,0;main()main()int i,j;char leader_name20;int i,j;char leader_name20;for(i=1;i=10;i+)for(i=1;i=10;i+)scanf(scanf(“%s%s”,leader_name);,leader_name);for(j=0;j3;j+)for(j=0;j3;j+)if(if(strcmp(leader_name,leaderj.name)strcmp(leader_name,leaderj.name)=0)=0)leaderj.count+;leaderj.count+;printf(p

21、rintf(“nn”););for(i=0;i3;i+)for(i=0;inump-num。3 3、区分下面的两种用法:、区分下面的两种用法:p-n+p-n+和和 +p-n+p-n1 1、结构体指针的定义:、结构体指针的定义:main()main()struct studentstruct student long number;long number;char name20;char name20;char sex;char sex;int age;int age;float score;float score;char addr30;char addr30;a=070441,a=07044

22、1,”Li PingLi Ping”,M M,56,56,”Tianjin Tianjin StreetStreet”,*p=&a;,*p=&a;2 2、结构体指针的使用:、结构体指针的使用:a.num,a.name,a.sex,a.addra.num,a.name,a.sex,a.addr(*p).num,(*p).name,(*p).sex,(*p).addr;(*p).num,(*p).name,(*p).sex,(*p).addr;p-num,p-name,p-sex,p-addr;p-num,p-name,p-sex,p-addr;指向结构体数组的指针指向结构体数组的指针1 1、定义

23、方法举例:定义方法举例:2 2、使用要点:、使用要点:p+:p+:是指针是指针p p指向数组的下个元素指向数组的下个元素,而这个元素是而这个元素是由结构体类型数据组成的由结构体类型数据组成的,它不是一个简单的变量它不是一个简单的变量.(+p)-num(+p)-num:先使指针先使指针p p指向结构体数组当前位置指向结构体数组当前位置的下一个元素的下一个元素,再访问其元素成员再访问其元素成员num;num;请区别与请区别与(p+)-num(p+)-num的不同。的不同。例例exp8_4exp8_4:指向结构体数组的指针:指向结构体数组的指针#include#include struct stud

24、entstruct student long number;char name20;long number;char name20;char sex;int age;char sex;int age;float score;char addr30;float score;char addr30;a3=070441,a3=070441,”Li PingLi Ping”,M M,56,56,”Tianjin StreetTianjin Street”,070442,070442,”Zhang FanZhang Fan”,F F,78,78,”Beijing RoadBeijing Road”,07

25、0443,070443,”Ren ZhongRen Zhong”,M M,34,34,”Shenyang Shenyang RoadRoad”;main()main()struct student*p;struct student*p;for(p=a;pa+3;p+)for(p=a;pnum,p-name,p-sex,p-age,p-score,p-addr);p-num,p-name,p-sex,p-age,p-score,p-addr);指向结构体的指针作函数的参数指向结构体的指针作函数的参数1 1、用结构体变量的成员作函数的参数与一般变量、用结构体变量的成员作函数的参数与一般变量作函数的

26、参数一致作函数的参数一致;2 2、用指向结构体变量的指针作函数的参数、用指向结构体变量的指针作函数的参数,实参将实参将地址传递给形参地址传递给形参,与前面指针作函数参数一致与前面指针作函数参数一致;3 3、新版本的、新版本的c c语言允许将整个结构体变量作为函数语言允许将整个结构体变量作为函数的参数进行传递的参数进行传递,要求形参与实参的类型必须一要求形参与实参的类型必须一致致,而且程序占用内存大而且程序占用内存大,运行速度慢运行速度慢.4 4、举例(参见课本、举例(参见课本p227p227)单链表单链表一、链表的含义:一、链表的含义:当一个结构体中有一个成员是指向本结构体的指针时,当一个结构

27、体中有一个成员是指向本结构体的指针时,通过这样的指针可以将若干个相同的结构体存储单元连通过这样的指针可以将若干个相同的结构体存储单元连接成一个新的数据结构。接成一个新的数据结构。举例:举例:二、功能:二、功能:可以根据需要动态的开辟存储空间。可以根据需要动态的开辟存储空间。1.malloc(size):1.malloc(size):在内存中动态的分配一个长度为在内存中动态的分配一个长度为sizesize的连的连续空间续空间;2.calloc(n,size):2.calloc(n,size):在内存中分配在内存中分配n n个长度为个长度为sizesize的连续空的连续空间间;3.free(ptr

28、):3.free(ptr):释放由释放由ptrptr指针指向的内存区域指针指向的内存区域.二、链表操作链表操作建立链表建立链表、在链表、在链表插入结点插入结点、删除链表结点删除链表结点单链表的结构:单链表的结构:struct studentstruct student int num;int num;float score;float score;struct student*next;struct student*next;要点:要点:1 1、链表中的元素在内存中存放顺序是不连续的。、链表中的元素在内存中存放顺序是不连续的。由由nextnext指针来连接各节点。指针来连接各节点。2 2、链表

29、数据结构的实现、链表数据结构的实现,必须利用指针变量必须利用指针变量.headheadnumnumscorescorenextnext numnumscorescorenextnext numnumscorescoreNULLNULL.节点节点建立含建立含n n个节点的个节点的链表过程链表过程:malloc()malloc()malloc()malloc()headheadnumnumscorescorenextnext numnumscorescorenextnext numnumscorescoreNULLNULL.struct student*creat()struct student*

30、creat()struct student*head,*p1,*p2;struct student*head,*p1,*p2;n=0;head=NULL;n=0;head=NULL;p1=p2=(struct student*)(malloc(sizeof(struct student);p1=p2=(struct student*)(malloc(sizeof(struct student);scanf(scanf(“%ld,%f%ld,%f”,&p1-num,&p1-score);,&p1-num,&p1-score);while(p1-num!=0)while(p1-num!=0)n=n

31、+1;if(n=1)head=p1;n=n+1;if(n=1)head=p1;else else p2-next=p1;p2-next=p1;p2=p1;p1=(struct student*)(malloc(sizeof(struct student);p2=p1;p1=(struct student*)(malloc(sizeof(struct student);scanf(scanf(“%ld,%f%ld,%f”,&p1-num,&p1-score);,&p1-num,&p1-score);p2-next=NULL;return(head);p2-next=NULL;return(hea

32、d);在链表中插入结点的过程在链表中插入结点的过程.malloc()malloc()malloc()malloc()headheadnumnumscorescorenextnext numnumscorescorenextnext numnumscorescoreNULLNULL numnumscorescorenextnext malloc()malloc()删除链表结点的过程删除链表结点的过程:malloc()malloc()headheadnumnumscorescorenextnext numnumscorescorenextnext numnumscorescorenextnext.

33、共同体(共同体(unionunion)1.1.共同体的含义与定义方法共同体的含义与定义方法2.2.共同体的共同体的存储特点存储特点3.3.共同体的使用共同体的使用共同体的含义与定义方法共同体的含义与定义方法一、含义:一、含义:几个不同变量共同占用同一块内存空间几个不同变量共同占用同一块内存空间,只是一种覆盖技术只是一种覆盖技术,所谓的共同占用是指这几个变量共同拥有内存的同一个起始地址所谓的共同占用是指这几个变量共同拥有内存的同一个起始地址.共用相同的存储单元。共用相同的存储单元。二、定义形式二、定义形式:union union 共用体名共用体名 例如例如:成员表列;成员表列;union dat

34、e union date 变量表列变量表列;int i;int i;char ch;char ch;float f;a,b,c;float f;a,b,c;共同体的存储特点共同体的存储特点1.1.同一块内存可以存放不同类型的数同一块内存可以存放不同类型的数据据,但在某一时刻只能存放其中的一但在某一时刻只能存放其中的一种种;2.2.共用体变量中起作用的成员是最后共用体变量中起作用的成员是最后一次存放的成员一次存放的成员;3.3.共用体变量的地址和它的成员的地共用体变量的地址和它的成员的地址是同一个地址址是同一个地址;4.4.共用体变量不能整体被赋值共用体变量不能整体被赋值,也不也不能给共用体变量

35、赋初值能给共用体变量赋初值;5.5.不能把共用体变量作为函数的参数不能把共用体变量作为函数的参数进行传递进行传递,但可以使用指向共用体变但可以使用指向共用体变量的指针作为函数的参数量的指针作为函数的参数;6.6.结构体类型和共用体类型可以嵌套结构体类型和共用体类型可以嵌套使用。使用。a.i/a.ch/a.fa.i/a.ch/a.fb.i/b.ch/b.fb.i/b.ch/b.fc.i/c.ch/c.fc.i/c.ch/c.fa ab bc c例如例如:union date union date int i;int i;char ch;char ch;float f;a,b,c;float f;

36、a,b,c;共同体的使用共同体的使用例例exp8_5:exp8_5:已知字符已知字符“0 0”的的ASCIIASCII马为十六进制的马为十六进制的30,30,下面程序的输出下面程序的输出为为:main()main()union union unsigned char c;unsigned char c;unsigned int i4;z;unsigned int i4;z;z.i0=0 x39;z.i1=0 x36z.i0=0 x39;z.i1=0 x36;printf(printf(“%cn%cn”,z.cz.c););运行结果:运行结果:9 90011011000000000i1?.i20

37、011100100000000i0c的地址i0的低位地址例:下列程序的运行结果是什么例:下列程序的运行结果是什么?#include#include main()main()union zjunion zj int aint a;char chchar ch2 2;auau;au.aau.a298298;printf(printf(dndndn,au.chdn,au.ch0 0,au.ch,au.ch1 1);运行结果为:运行结果为:42,142,1结构体与共用体小结结构体与共用体小结一、共同点:一、共同点:都是不同类型数据的集合都是不同类型数据的集合二、不同点:二、不同点:1 1、结构体中各个

38、成员均在内存中存在,、结构体中各个成员均在内存中存在,而共同体中只有一个成员存在于内存中。而共同体中只有一个成员存在于内存中。2 2、结构体占用的存储空间是所有成员所占空间的和、结构体占用的存储空间是所有成员所占空间的和;=sizeof(=sizeof(结构体名)结构体名)而共用体所占内存空间的大小是所有成员中占用存而共用体所占内存空间的大小是所有成员中占用存 储空间最大储空间最大的一个成员的占用空间的值。的一个成员的占用空间的值。3 3、结构体中各个成员相互独立、互不干扰,、结构体中各个成员相互独立、互不干扰,共同体中改变一个成员的值,会影响到其它成员的值。共同体中改变一个成员的值,会影响到

39、其它成员的值。4 4、结构体与共同体可以互为成员。、结构体与共同体可以互为成员。枚举类型枚举类型1 1、含义:、含义:“枚举类型枚举类型”是将变量的取值一一列举出来是将变量的取值一一列举出来,变量的取值只限在列变量的取值只限在列出来的取值范围内出来的取值范围内.2 2、定义方法:、定义方法:enum weekday sun,mon,tue,wed,thu,fri,sat;enum weekday sun,mon,tue,wed,thu,fri,sat;enum weekday workday;enum weekday workday;枚举类型的变量枚举类型的变量 workdayworkday的

40、取值只能在的取值只能在sun-satsun-sat之间之间.3 3、使用要点:使用要点:4 4、应用举例应用举例要点:要点:1.1.枚举元素在枚举元素在c c语言中按常量来处理语言中按常量来处理,不是变量不是变量,不能被赋值不能被赋值;2.2.作为常量的枚举元素作为常量的枚举元素,它们是有值的它们是有值的.在编译是按它们的定义顺序取在编译是按它们的定义顺序取值为值为0,1,2,30,1,2,3 也可以在定义类型时人为定义枚举元素的值也可以在定义类型时人为定义枚举元素的值,如如 enum weekday sun=7,mon=1,tue,wed,thu,fri,sat;enum weekday s

41、un=7,mon=1,tue,wed,thu,fri,sat;enum weekday workday;enum weekday workday;3.3.枚举值可以用来做条件判断枚举值可以用来做条件判断,如如:if(workday=mon)if(workday=mon)if(workdaytue)if(workdaytue)4.4.一个整数不能直接赋值给一个枚举变量一个整数不能直接赋值给一个枚举变量,如如:workday=2;workday=2;()workday=(enum weekday)2;workday=(enum weekday)2;()workday=tue;workday=tue

42、;()例:编写程序,功能是输入当天是星期几,就可以计算并输出例:编写程序,功能是输入当天是星期几,就可以计算并输出n n天天后是星期几。例如,今天是星期六,若求后是星期几。例如,今天是星期六,若求3 3天后是星期几,则输天后是星期几,则输入入6 6,3 3,即输出,即输出“3 3天后是星期天后是星期2 2”。#include#include enum weekenum weeksunsun,monmon,tuetue,wedwed,thuthu,frifri,satsat;enum week nd(wenum week nd(w,n)n)enum week w enum week w;int

43、nint n;return(enum week)(int)wreturn(enum week)(int)wn)n)7)7);main()main()enum week w0enum week w0,wnwn;/*w0/*w0表示当天的星期值,表示当天的星期值,wnwn表示表示n n天后的星期值天后的星期值*/int n int n;scanf(scanf(d d,dd,w0w0,n)n);wnwnnd(w0nd(w0,n)n);if(wnif(wn0)printf(0)printf(d d天后是星期日天后是星期日nn,n)n);else printf(else printf(d d天后是星期天

44、后是星期dndn,wn)wn);typedeftypedef定义类型定义类型一、含义:一、含义:使用使用typedeftypedef可以说明一个新的类型标识符。可以说明一个新的类型标识符。二、定义方法:二、定义方法:typedef typedef 类型名类型名 标识符标识符三、要点:三、要点:1 1、“类型名类型名”为已有定义的类型标识符;为已有定义的类型标识符;“标识符标识符”为用户定义的新标识符为用户定义的新标识符2 2、经、经typedeftypedef说明后的标识符可作为原数据类型名使用说明后的标识符可作为原数据类型名使用四、四、应用:应用:typedef struct student

45、typedef struct student int i;int i;.REC;REC;REC x,y,*p;REC x,y,*p;typedef structtypedef struct int month;int month;int day;int day;int year;int year;DATE;DATE;DATE birthday,*p;DATE birthday,*p;typedef structtypedef struct int _fd;int _fd;int _cleft;int _cleft;int _mode;int _mode;char*_nextc;char*_nextc;char*_buff;char*_buff;FILE;FILE;FILE*fp;FILE*fp;

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服