第9章指针的应用

上传人:妈**** 文档编号:242975454 上传时间:2024-09-13 格式:PPT 页数:53 大小:2.08MB
返回 下载 相关 举报
第9章指针的应用_第1页
第1页 / 共53页
第9章指针的应用_第2页
第2页 / 共53页
第9章指针的应用_第3页
第3页 / 共53页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,9,章,指针的应用,本章主要内容,1,、指针与数组,2,、字符串的指针和指向字符串的指针变量,3,、指针数组,4,、指向指针的指针,5,、函数指针,6,、返回指针的函数,7,、,main,()函数的返回指和参数,9.1,一维数组与指针,C,语言规定数组名代表数组的起始地址,一个数组包含若干个元素,每个数组元素都在内存中占用存储空间,都有相应的地址,指针变量可以指向数组或数组元素。,【,例,9.1】,下面的程序用于演示数组元素的引用方法,请认真体会它们的联系和区别。,#,includestdio.h,int,main(),int,a5,i;,for(i,=0;i5;i+),scanf(%d,&ai,);,for(i,=0;i5;i+),printf(%3d,ai);,printf(n,);,return 0;,#,includestdio.h,int,main(),int,a5,i;,for(i,=0;i5;i+),scanf(%d,a+i,);,for(i,=0;i5;i+),printf(%3d,*(,a+i,);,printf(n,);,return 0;,9.1.1,数组名的特殊意义及其在访问数组元素中的作用,9.1.2,数组元素的指针,int,a5,*p;,p=,p=,等价于,p=a;,其作用是将指针变量,p,指向数组元素的首地址,其指向关系如图,9-2,(,b,)所示。,9.1.3,指针变量运算,指针变量的运算是指指针变量所持有的地址为运算对象进行的运算,所以指针变量的运算实际上就是地址的运算。,指针的运算常常是针对数组元素的,因为数组在内存中是连续存放的,所以指向同一数组中不同元素的两个指针的关系运算常用于比较它们所指元素在数组的前后位置关系。指针的算术运算(增,1,或减,1,)则常用来移动指针的指向,使其指向数组中的其他元素。这里强调只有运算结果仍指向同一数组中的元素时,指针运算才有意义。,1,、指针加上整数,指针,p,加上整数,j,将产生指向特定元素的指针,这个特定元素是,p,原来指向的元素后的第,j,个位置。,2,、指针减去整数,指针,p,减去整数,j,将产生指向特定元素的指针,这个特定元素是,p,原来指向的元素前的第,j,个位置。,3,、两个指针相减,当两个指针相减的时候,结果为两个指针之间的距离,用数组元素的个数来表示。因此,如果,p,指向,ai,且,q,指向,aj,,则,p-q,就等于,i-j,。,4,、指针的比较,可以用关系运算符(,、,、,=,)和判断运算符(,=,和,!=,)进行指针的比较运算,只有在两个指针指向同一数组时,用关系运算符进行的指针比较才有意义。比较的结果依赖于数组中两个元素的相对位置。,例如:,int,a10,*p,*q;,p=,q=a1;,p=q,的结果为,1,。,int,a5,*p;,p=a;,表明定义了一个指向整形数据的指针变量,p,,使其指向了数组,a,的首地址,通过这个指针变量,p,就可以访问数组,a,的元素。,5,、用指针变量访问数组元素,注意:,指针运算,p+1,和,p+,表面现象上看,都是对当前的指针,p,进行加,1,运算,但,p+1,并不改变当前指针的指向,,p+,表示使,p,的指向从当前的位置指向下一个元素。,p+,的偏移问题,是偏移,1*,sizeof,(,基类型,),个字节。,采用通过移动指针变量,p,来引用数组元素的方法,可将,【,例,9.1】,程序修改为,#,includestdio.h,int,main(),int,a5,*p;,for(p,=,a;p,a+5;p+),scanf(%d,p,);,for(p,=,a;p,a+5;p+),printf(%3d,*p);,printf(n,);,return 0;,如果有定义:,int,a5,*p;,p=a;,指针与数组元素的关系归纳如下:,&,aj,a+j,p+j,等价,代表,a,数组第,j+l,个元素的地址。,aj,*(,a+j),pj,*(,p+j,),等价,代表,a,数组第,j+l,个元素的值。, *,(p+),等价于,aj,+,、*,(p-),等价于,aj,-,、*,(+p),等价于,a+j,、*,(-p),等价,于,a-j,。,数组元素表示方法,a0,a1,a2,a3,a9,.,a,a+9,a+1,a+2,地址,元素,下标法,a0,a1,a2,a9,变址运算符,a,i,*(,a+i,),ai,pi,*(,p+i,),*(,a+i,),*,a,*(,a+1),*(,a+2),*(,a+9),int,a10;,a0,a1,a2,a3,a9,.,p,p+9,p+1,p+2,地址,元素,指针法,*,p,*(,p+1),*(,p+2),*(,p+9),p0,p1,p2,p9,a0,a1,a2,a3,a4,例 数组元素的引用方法,main(),int,a5,*,p,i,;,for(i,=0;i5;i+),ai,=i+1;,pa=a;,for(i,=0;i5;i+),printf(a%d:%dn,i,ai,);,for(i,=0;i5;i+),printf,(*(,a+%d):%dn,i,*(,a+i,),);,for(i,=0;i5;i+),printf(p%d:%dn,i,pi,);,for(i,=0;i5;i+),printf,(*(,p+%d):%dn,i,*(,p+i,),);,1,2,3,4,5,p,使用指针变量是应该注意以下几问题:,不要使用没有赋值的指针变量,只用指针之前一定要对它正确的赋值。,使用指针变量访问数组元素时,要随时检查指针的变化范围和指针当前的值,使指针的指向不能超过数组的上下界。,#,includestdio.h,void main(),int,a10,*p=,a,j,;,for(j,=0;j10;j+),scanf(&d, p+);,for(j,=0;j10;j+),printf(%3d,*p+);,printf(n,);,#,includestdio.h,void main(),int,a10,*p=,a,j,;,for(j,=0;j10;j+),scanf(&d,p,+);,p=a;,for(j,=0;j10;j+),printf(%3d,*p+);,printf(n,);,无论传递数组的首地址的函数参数用数组名还是指针,其实质都是指针,在函数被调用时,该指针通过参数传递均指向数组。,【,例,9.3】,下面的程序用于演示数组和指针变量作为函数的参数,实现的功能是输入几个学生的成绩,求其平均成绩。,方法一:实参用指针变量,形参用数组名。,#define N 5,float,aver(float,p),int,i;,float,av,s,=0;,for(i,=0;i,N;i,+),s+=,pi,;,av,=s/N;,return (,av,);,void main(),float,scoreN,av,*p=score;,int,i;,printf,(,请输入,5,个学生的成绩,!);,for(i,=0;i,N;i,+),scanf(&f,&scorei,);,av,=,aver(,p,);,printf,(,这,5,个学生的平均成绩是,%5.2f,av);,形,参用,数组,实,参用,指针,方法二:实参用数组名,形参用指针变量。,#define N 5,float,aver(float,*pa), int i;,float av,s=0;,for(i=0;iN;i+),s+=*pa+;,av=s/N;,return (av);,void main(),float scoreN,av;,int i;,printf(,请输入,5,个学生的成绩,!);,for(i=0;iN;i+),scanf(,av=aver(,score,);,printf,(,这,5,个学生的平均成绩是,%5.2f ,av,);,形,参用,指针,实,参用,数组,方法三:实参用指针变量,形参也用指针变量。,#define N 5,float,aver(float,*pa,), int i;,float av,s=0;,for(i=0;iN;i+),s+=*pa+;,av=s/N;,return (av);,void main(),float,scoreN,av,*p=score;,int i;,printf(!);,for(i=0;iN;i+),scanf(,av=aver(,p,);,printf(%5.2f,av);,以上几种方法,实质上都是地址的传递,方法一的形参是数组名,方法二和方法三的形参是指针变量,由于数组名代表数组的首地址,所以实现的效果是一样的。,形,参用,指针,实,参用,指针,#define N 5,void main(),int,aN,*p;,int,count=0,sum=0;,printf(%d!,N,);,for(p,=,a;p,0), sum+=*p;,count+;,p=a;,while(p,a+N,),printf(%-3d,*p+);,printf(n);,printf(count,=%,dn,count,);,printf(sum=%dn,sum);,return 0;,【,例,9.4】,输入,n,个数,对其中的正数统计个数并求和,程序最后输出原始数据和统计结果。,将,【,例,8.8】,冒泡法排序的程序通过指针的方法修改如下:,#,includestdio.h,#define M 5,void sort(int v , int n), int i, j, temp;,for(i=0;ii;j-), if(vj-1vj), temp= vj-1;,vj-1= vj;,vj,= temp;,return 0;,void,print(int,v ,int,n), int i;,for(i=0;in;i+),printf(%d,vi,);,printf(n,);,return 0;,main(), int i,aM;,for(i=0;iM;i+),scanf( %d ,sort(a,M);,print(a,M,);,return 0;,【,例,9.5】,用选择法对数组元素按照从大到小的顺序排序,void main(),void,sort(int,x ,int,n);,int,*p,i,a10;,p=a;,for(i,=0;i10;i+),scanf(%d,p,+);,p=a;,sort(p,10);,for(p,=,a,i,=0;i10;i+),printf(%d,*p);,p+;,return 0;,void,sort(int,x,int,n),int,i,j,k,t,;,for(i,=0;in-1;i+), k=i;,for(j,=i+1;j,xk,),k=j;,if(k,!=i),t=,xi;xi,=,xk;xk,=t;,return 0;,void sort(int *x,int n),int i,j,k,t;,for(i=0;in-1;i+),k=i;,for(j=i+1;j*(,x+k,),k=j;,if(k,!=i),t=*(,x+i,);,*(,x+i,)=*(,x+k,);,*(,x+k,)=t;,return 0;,二维数组逻辑,结构,int,a34;,它的逻辑存储结构,指针与,二维数组,ai,*(,*(,ai,+j),*(,a+i,),+j),j,等价,二维数组,的物理存储,int,a34 ;,*p=a,p,就是,p0,p+1,就是,p1,p+i,就是,pi,二维数组的指针变量,类型标识符(*指针变量名),长度,;,二维数组的列数,int,(*p),4,;,表示变量是指针类型,小括号不能掉,缺省的为指针数组,指针与二维数组的应用举例,【,例,9.6】,用指向数组元素的指针变量输出数组元素的值,并统计其中的正数。,main(),int,a4=1,-2,3,4,11,-22,33,44,-55,66,0,-89;,int,count=0,*p;,for(p,=a0;p0),count+;,printf(%4d,*p);,printf(n,count=%,dn,count,);,用普通的指针变量来访问二维数组的元素,【,例,9.7】,有一个班,,3,个学生,每个学生有,4,门课程,计算总平均分以及第,n,个学生的成绩。,用指向二维数组的指针变量访问数组元素,search(float,(*p)4,int n), int i;,for(i=0;i4;i+),printf(%6.2f,*(*(p+n)+i);,printf(n);,思考:,怎样查找第,m,个学生第,n,门课程的成绩?,main(),int,n;,float score34=65,67,70,60,80,87,90,81,90,99,100,98;,scanf(%d,&n,);,average(*score,12);,search(score,n,);,average(float,*,p,int,n), float *,qq,;,float sum=0,aver;,qq=p+n+1;,for( ; p=qq;p+),sum+=*p;,aver=sum/n;,printf(Average,=%5.2fn,aver);,9.3,字符串与指针,9.3.1,字符串的表示形式,在,C,语言中,可以用两种方法访问一个字符串。,(,1,)用字符数组存放一个字符串,然后输出该字符串。,把字符串的各字符,(,包括结束标志,0),依次保存在字符数组中,利用下标变量或数组名对数组进行操作。输出时用,%s,格式进行整体输出。,【,例,9.8】,定义一个字符串,对它初始化,然后输出该字符串。,#,includestdio.h,void main(), char,str,=C program.;,printf(%sn,str,);,return 0;,(,2,)用字符指针指向一个字符串,也可以直接定义指向字符串的指针变量,利用该指针变量对字符串进行操作。,【,例,9.9】,字符指针应用举例。,#,includestdio.h,void main(), char *,str,=C program.;,printf(%sn,str,);,return 0;,对字符串中字符的存取,既可以使用下标的方法,,也可以使用指针的方法,【,例,9.10】,将字符串,a,复制给字符串,b,main(),char a=I am a boy.,b20;,int,i;,for(i,=0;*(,a+i,)!=0;i+),*(,b+i,)=*(,a+i,);,*(,b+i,)=0;,printf(string,a,is:%sn,a,);,printf(string,b is:);,for(i,=0;bi!=0;i+),printf(%c,bi,);,printf(n,);,return 0;,也可以使用指针变量,通过改变指针变量的指向,来处理所指向的内容,【,例,9.11】,用指针变量来处理,【,例,9.10】,的问题。,main(), char a=I am a boy.,b20,*p1,*p2;,int,i;,p1=a;,p2=b;,for(;*p1!=0;p1+,p2+),*p2=*p1;,*p2=0;,printf(string,a,is:%sn,a,);,printf(string,b is:);,for(i,=0;bi!=0;i+),printf(%c,bi,);,printf(n,);,使用时应注意以下几个问题:,字符串指针变量本身是一个变量,用于存放字符串的首地址。, 对字符数组作初始化赋值,必须采用外部类型或静态类型,而对字符串指针变量则无此限制。,例如:,static char,st,=C Language;,char *,ps,= C Language;,对字符串指针方式,可以写为:,char *,ps,;,*,ps,= C Language;,而对数组方式:,static char,st,=C Language;,char *,ps,= C Language;,不能写成:,static char st20;,st,=C Language;,9.3.2,字符指针作为函数的参数,将一个字符串从一个函数传递到另一个函数,一方面可以用字符数组名做参数,另一方面可以用指向字符串的指针变量做参数,这样,在被调函数中若改变了字符串的内容,则主调函数中相应的字符串的内容也随之改变。,【,例,9.12】,用函数的调用实现字符串的复制,(,1,)用字符数组名作为参数,main(),copy_string(char,form,char,to);,char a=I am a teacher.;,char b=You are a student.;,printf(strint,a:%snstring,b:%sn,a,b,);,printf(copy,string,a,to,string,b:n,);,copy_string(a,b,);,printf(strint,a:%snstring,b:%sn,a,b,);,return 0;,copy_string(char,form,char,to),int,i=0;,while(formi,!=0),toi,=,formi,;,i+ ;,toi,=0;,在,main,函数中也可以用字符指针变量作为实参,先使指针变量,a,和,b,分别指向两个字符串。,main,函数可以做如下修改:,void main(),void,copy_string(char,form,char,to);,char p=I am a teacher.;,char q=You are a student.;,char *a=p,*b=q;,printf(strint,a:%snstring,b:%sn,a,b,);,printf(copy,string,a,to,string,b:n,);,copy_string(a,b,);,printf(strint,a:%snstring,b:%sn,a,b,);,return 0;,void main(),void,copy_string(char,*,form,char,*to);,char p=I am a teacher.;,char q=You are a student.;,char *a=p,*b=q;,printf(strint,a:%snstring,b:%sn,a,b,);,printf(copy,string,a,to,string,b:n,);,copy_string(a,b,);,printf(strint,a:%snstring,b:%sn,a,b,);,return 0;,(,2,)形参用字符指针变量,void,copy_string(char,*form,char *to),for(; *form!=0;form+,to+),*to=*form;,*to=0;,return 0;,int *pb2,pb0,pb1,int b23,1,2,3,2,4,6,指针数组,用途:,用于处理二维数组或多个字符串,指针数组,定义形式:,存储类型,数据类型,*,数组名,数组长度,;,指针本身的存储类型,指针所指向变量的数据类型,例,int,*p4;,指针数组赋值与初始化,赋值:,main(),int,b23,*p 2;,p 0=b0;,p 1=b1;,.,初始化,:,main(),int,b23,*p =b0,b1,;,.,赋值,:,main(), char a=Fortran;,char b=Lisp;,char c=Basic;,char *p4;,p0=a; p1=b; p2=c; p3=NULL;,.,指针数组赋值与初始化,或,:,main(), char *p4;,p0= Fortran;,p1= Lisp;,p2= Basic;,p3=NULL;,.,L i s p 0,F o r t r a n 0,B a s i c 0,p0,p1,p2,p3,0,指针数组赋值与初始化,初始化,:,main(),char *p=Fortran, Lisp, ,Basic,NULL,;,.,char name59=,gain,much,stronger,point,bye,;,char *name5,=,gain,much,stronger,point,bye,;,g a i n 0,s t r o n g e r 0,p o i n t 0,m u c h 0,name0,name1,name2,name3,name4,b y e 0,g a i n 0,s t r o n g e r 0,p o i n t 0,m u c h 0,b y e 0,二维数组,存储空间,固定,字符指针数组相当于,可变列长,的二维数组,指针数组元素,的,作用,相当于,二维数组的,行名,但,指针数组中,元素,是,指针变量,二维数组,的,行名,是,地址常量,二维数组与指针数组区别:,main(),int,b23,*p 2;,int,i,j,;,for(i,=0;i2;i+),for(j,=0;j3;j+),bij,=(i+1)*(j+1);,p0=b0;,p1=b1;,for(i,=0;i2;i+),for(j,=0;j3;j+),printf(b%d%d:%2dn,i,j,*(,pi+j,),);,例 用指针数组处理二维数组,int,*p2,p0,p1,int,b23,b00 *(p0+0),b01 *(p0+1),b02 *(p0+2),b10 *p(1+0),b11 *(p1+1),b12 *(p1+2),1,2,3,2,4,6,b00:1,b01:2,b02:3,b10:2,b11:4,b12:6,例 对字符串排序(简单选择排序),main(), void,sort(char,*,name,int,n),print(char,*,name,int,n);,char *name=Follow,me,BASIC,Great,Wall,FORTRAN,Computer,;,int,n=5;,sort(name,n,);,print(name,n,);,void,sort(char,*,name,int,n), char *temp;,int,i,j,k,;,for(i,=0;in-1;i+), k=i;,for(j,=i+1;j0) k=j;,if(k,!=i), temp=,namei,;,namei,=,namek,;,namek,=temp;,name0,name1,name2,name3,name4,name,Great Wall,FORTRAN,Computer,Follow me,BASIC,k,j,k,j,j,j,i=0,strcmp(namek,namej),比较规则:两个字符串自左向右逐个字符比较(按,ASCII,值大小比较),直到出现不同的字符或遇到,0,为止。如果全部字符相同,认为两个字符串相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准。,(,1,)如果字符串,1=,字符串,2,,则函数返回值为,0,。,(,2,)如果字符串,1,字符串,2,,则函数返回值为一正整数。,(,3,)如果字符串,1,字符串,2,,则函数返回值为一负整数。,main(), void sort(char *name,int n),print(char *name,int n);,char *name=Follow me,BASIC,Great Wall,FORTRAN,Computer ;,int n=5;,sort(name,n);,print(name,n);,void sort(char *name,int n), char *temp;,int i,j,k;,for(i=0;in-1;i+), k=i;,for(j=i+1;j0) k=j;,if(k!=i), temp=namei; namei=namek; namek=temp;,i=1,name0,name1,name2,name3,name4,name,Great Wall,FORTRAN,Computer,Follow me,BASIC,k,j,j,j,k,k,main(), void sort(char *name,int n),print(char *name,int n);,char *name=Follow me,BASIC,Great Wall,FORTRAN,Computer ;,int n=5;,sort(name,n);,print(name,n);,void sort(char *name,int n), char *temp;,int i,j,k;,for(i=0;in-1;i+), k=i;,for(j=i+1;j0) k=j;,if(k!=i), temp=namei; namei=namek; namek=temp;,i=2,name0,name1,name2,name3,name4,name,Great Wall,FORTRAN,Computer,Follow me,BASIC,k,j,j,k,main(), void sort(char *name,int n),print(char *name,int n);,char *name=Follow me,BASIC,Great Wall,FORTRAN,Computer ;,int n=5;,sort(name,n);,print(name,n);,void sort(char *name,int n), char *temp;,int i,j,k;,for(i=0;in-1;i+), k=i;,for(j=i+1;j0) k=j;,if(k!=i), temp=namei; namei=namek; namek=temp;,i=3,name0,name1,name2,name3,name4,name,Great Wall,FORTRAN,Computer,Follow me,BASIC,j,k,main(), void sort(char *name,int n),print(char *name,int n);,char *name=Follow me,BASIC,Great Wall,FORTRAN,Computer ;,int n=5;,sort(name,n);,print(name,n);,void sort(char *name,int n), char *temp;,int i,j,k;,for(i=0;in-1;i+), k=i;,for(j=i+1;j0) k=j;,if(k!=i), temp=namei; namei=namek; namek=temp;,name0,name1,name2,name3,name4,name,Great Wall,FORTRAN,Computer,Follow me,BASIC,max,.,指令,1,指令,2,函数返回值的数据类型,专门存放函数入口地址,可指向返回值类型相同的不同函数,函数指针变量指向的函数必须有,函数说明,( ),不能省,int (*p)(),与,int *p(),不同,指向函数的指针,函数指针:函数在编译时被分配的入口地址,用函数名表示,指向函数的指针变量,定义形式:,数据类型,(,*,指针变量名,),( );,如,int (*p)( );,函数指针变量赋值,:,如,p=max;,函数调用形式:,c=max(a,b);,c=(*p)(a,b);,c=p (a,b);,对函数指针变量,p,n, p+, p-,无意义,例 用函数指针变量调用函数,两个数较大的数,main(), int max(int ,int);,int a,b,c;,scanf(%d,%d,c=max(a,b);,printf(a=%d,b=%d,max=%dn,a,b,c);,int max(int x,int y), int z;,if(xy) z=x;,else z=y;,return(z);,main(), int max(int ,int), (*p)();,int a,b,c;,p=max;,scanf(%d,%d,c=(*p)(a,b);,printf(a=%d,b=%d,max=%dn,a,b,c,int max(int x,int y), int z;,if(xy) z=x;,else z=y;,return(z);,例 用函数指针变量作参数,求最大值、最小值和两数之和,main(), int a,b,max(int,int) ;,int min(int,int),add(int,int);,void process(int,int,int (*fun)();,scanf(%d,%d,process(a,b,max,);,process(a,b,min,);,process(a,b,add,);,void process(int x,int y,int (*fun)(), int result;,result,=(*fun)(x,y);,printf(%dn,result);,max(int x,int y),printf(“max=”);,return(xy?x:y);,min(int x,int y),printf(“min=”);,return(xy?x:y);,add(int x,int y),printf(“sum=”);,return(x+y);,用函数指针变量作函数参数,例 指针函数实现:有若干学生成绩,要求输入学生序号后,能输出其全部成绩,p,p,p,p,返回指针值的函数,函数定义形式:,类型标识符 *函数名,(,参数表,);,例,int *f(int x, int y),main(), float score4=60,70,80,90,56,89,67,88,34,78,90,66;,float,*search(float (*pointer)4,int n),*p;,int i,m;,printf(Enter the number of student:);,scanf(%d,printf(The scores of No.%d are:n,m);,p=search(score,m);,for(i=0;i*y) return,x,;,else return,y,;,main(), int a=2,b=3;,int *p;,p=f1(,printf(%xn,p);,.,2000,2008,200A,2002,2004,2006,2,3,指针变量,y,指针变量,x,(f1),2002,2000,COPY,变量,a,变量,b,(main),指针变量,p,*,.,.,2000,2008,200A,2002,2004,2006,2,变量,a,变量,b,(main),3,指针变量,p,*,2002,int *,f3(int *x,int *y),if(*x*y) return,x,;,else return,y;,0,main(), int a=2,b=3;,int *p;,p=f1(,printf(%xn, p);,例 写一个函数,求两个,int,型变量中较大值的变量的地址,int *,f3(int x,int y),if(xy) return,&x,;,else return,&y,;,main(), int a=2,b=3;,int *p;,p=f3(a, b);,printf(%xn, p);,.,2000,2008,200A,2002,2004,2006,2,3,变量,y,变量,x,(f3),3,2,COPY,变量,a,变量,b,(main),指针变量,p,*,.,.,2000,2008,200A,2002,2004,2006,2,变量,a,变量,b,(main),3,指针变量,p,*,int *,f3(int x,int y),if(xy) return ,else return ,main(), int a=2,b=3;,int *p;,p=f3(a,b);,printf(%xn,*p);,不能将,形参,或,局部变量,的,地址,作函数返回值,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!