C语言新教材PPT课堂课件-第10章指针_第1页
C语言新教材PPT课堂课件-第10章指针_第2页
C语言新教材PPT课堂课件-第10章指针_第3页
C语言新教材PPT课堂课件-第10章指针_第4页
C语言新教材PPT课堂课件-第10章指针_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第10章 指针 C程序的变量所存放的数据: 数值型数据:整数、实数通过前面的学习,我们已知道: 字符型数据:字符、字符串 结构型数据:数组、结构体、共用体 占有一定长度的内存 单元 如:int x; x占二字节、二个单元 每一个变量都有一个地址,为无符号整数,它不同于一般的整数。问题: 能否对地址运算? 能否用一个变量保存地址?这些变量具有的性质: 指针是语言中的重要概念,也是语言的重要特色。使用指针,可以使程序更加简洁、紧凑、高效。10.1 地址和指针的概念一、数据在内存中的存放设:系统分配i的起始地址为2000的单元内存:为一个连续编号(连续地址)且以一个单元为一个字节的连续存贮区。 若程

2、序中定义了三个int变量i, j, k int i= 5, j=5, k=10; 则: j的起始地址有可能为为2002的单元k的起始地址有可能为2004的单元2000200120022003200420053001 5+5102000ijk当程序中要用它们的值时: y=i+j+k;找到j的地址2002,将2002,20003中的数据5读出;找到k的地址2004,将2004,2005中的数据10读出。分别 找到i的地址2000,将2000,2001中的数据5读出;则系统通过一张变量名与地址对应关系表:上述过程称为变量的 “直接访问”然后把这些数据进行算术运算。直接访问:直接使用存放该数据的变量名

3、。i相当于使用 5使用变量如:用pi, pj, pk来存放i, j, k的地址200020022004 55103001300330053007200020022004pipjpkijk 若要得到变量i的值,可以先访问pi,得到i的地址,再通过该地址找到它i的值。显然,pi与i是通过i的地址联系起来的。 间接访问:如果将某一变量的地址(如i的地址2000)存放到另一个变量x,则可通过x来存取i的值。(1)指针即地址 一个变量的地址称为该变量的指针。通过变量的指针能够找到该变量。(2)指针变量专门用于存储其它变量地址的变量 指针变量pi的值就是变量i的地址。指针与指针变量的区别,就是变量值与变量

4、的区别。(3)为表示指针变量和它指向的变量之间的关系,用指针运算符“*”表示。 在定义变量时表示是指针,在引用变量时表示取值。例如:int num, *num_pointer ; /*定义num_pointer为指向 int 型的指针变量*/num=5; /*将5直接赋给变量num*/num_pointer=# /*使num_pointer指向num */*num_pointer=3; /*将3赋给指针变量num_pointer所指向的num*/此时变量num的值=3。被间接赋值为3,即指针变量num_pointer所指向的值为3。二、指针与指针变量10.2.1 定义一个指针变量表示该

5、变量为指向某类型变量的指针变量。如: int p; (p为指向整型变量的指针) char *s;(s为指向字符型变量的指针) float *t;(t为指向浮点型变量的指针)定义指针变量的一般形式为: 类型名 指针变量名10.2 变量的指针和指向变量的指针变量例10.1 指针变量的定义与相关运算示例。 main() int num_int=12, *p_int; /*定义一个指向int型数据的指针变量p_int */ float num_f=3.14, *p_f; /*定义一个指向float型数据的指针变量p_f */ char num_ch=p, *p_ch;/*定义一个指向char型数据的指

6、针变量p_ch */p_int=&num_int; /*取变量num_int的地址,赋值给p_int */p_f=&num_f; /*取变量num_f的地址,赋值给p_f */p_ch=&num_ch; /*取变量num_ch的地址,赋值给p_ch */printf(“num_int=%d, *p_int=%dn”, num_int, *p_int);printf(“num_f=%4.2f, *p_f=%4.2fn”, num_f, *p_f);printf(“num_ch=%c, *p_ch=%cn”, num_ch, *p_ch); 程序运行结果:num_int=12, *p_int=12

7、num_f=3.14, *p_f=3.14num_ch=p, *p_ch=p10.2.2 指针变量的引用请牢记: 指针变量中只能存放地址(指针),不要讲一个整型量(或任何其他非地址类型的数据)赋给一个指针变量。下面赋值是不合法的: int *pointer_1; pointer_1=100;有两个有关的运算符:&: 取地址运算符; *: 指针运算符(或称“间接访问”运算符)。例如:&a为变量a的地址,*p为指针变量p所指向的存储单元。 例10.2 输入2个整数,从大到小排序输出。main() int *p1, *p2, *p,a,b; scanf(“%d%d”,&a,&b);p1=&a;p2=

8、&b;if(ab) /*如果ab则不交换输出,否则,交换后输出。p1p2abp1p2ab对于“&”和“*”运算符做一些说明:(1) 如果有pointer_1=&a,那么&*pointer_1是什么? 由于*pointer_1是变量a的值,那么&*pointer_1就是变量a的地址。(2) 如果有*&a,那么*&a是什么含义? 先进行&a运算,得到a的地址,在进行*运算。即&a所指向的变量,等价于变量a。注意:存取指针变量所指向变量(目标变量)的值:用指针运算符*, 即:*p 为 i。 , &为同级运算符,结合性自右至左。则当&或&在一起时,具有抵消作用。(3) (*pointer_1)+相当于

9、a+。注意前面要有括号。 10.2.3 指针变量作函数参数1.指针变量,既可以作为函数的形参,也可以作函数的实参。2.指针变量作实参时,与普通变量一样,也是“值传递”,即将指针变量的值(一个地址)传递给被调用函数的形参(必须是一个指针变量)。注意:被调用函数不能改变实参指针变量的值,但可以改变实参指针变量所指向的变量的值。例10.3 使用函数调用方式,输入2个整数,从大到小排序输出,要求实参为指针变量。void swap(int *p1, int *p2) int temp;temp=*p1, *p1=*p2, *p2=temp; main() int a,b; int *pointer_1=

10、&a, *pointer_2=&b; scanf(“%d %d”, &a,&b); if(ab) swap(pointer_1 ,pointer_12); /*指针变量作实参*/ printf(“n%d, %dn”, a,b); /*输出排序后的a和b的值*/ 程序运行情况:5 9 9 5 虽然被调用函数不能改变实参指针变量的值,但可以通过它来改变它们所指向的变量的值。 为了利用被调用函数改变的变量值,应该使用指针变量作函数实参。其机制为:在执行被调用函数时,使形参指针变量所指向的变量的值发生变化;函数调用结束后,通过不变的实参指针将变化的值保留下来。 例10.4 输入3个整数,按降序(从大到

11、小的顺序)输出。要求使用变量的指针作函数调用的实参来实现。swap(int *p1, int *p2) int temp; temp=*p1, *p1=*p2, *p2=temp; exchange(int *q1, int *q2,int *q3) if(*q1*q2)swap(q1,q2);if(*q1*q3)swap(q1,q3);if(*q2*q3)swap(q2,q3);main() int a,b,c,*p1,*p2,*p3; scanf(“%d %d %d”, &a,&b,&c); p1=&a,p2 =&b,p3 =&c; exchange(p1,p2,p3 ); printf(

12、“排序结果: %d, %d, %dn”,a,b,c); 程序运行情况:9 0 10 10,9,0 一个变量的地址为该变量的指针。当用一个变量来存放该地址(指针)时,称为指针变量。 一个数组元素相当于一个简单变量。于是,亦可用一个指针变量来指向数组元素。不同之处: 数组元素连续地占用内存单元,则当一个元素的指针已知时,其它元素的指针亦可知道。10.3 数组与指针 概述1.概念数组的地址数组在内存中的起始地址,数组元素的地址数组元素在内存中的起始地址。指向数组元素的指针即指针变量的值为数组元素的地址。2.指向数组元素的指针变量的定义指向数组元素的指针变量的定义,与指向普通变量的指针变量的定义方法一

13、样。例如,int array10, *pointer=array;指向数组元素的起始地址指向数组元素的第0号元素。或者: int array10, *pointer&array0;注意:数组名代表数组在内存中的起始地址(与第0个元素的地址相同),所以可以用数组名给指针变量赋值。3.数组元素的引用数组元素的引用,既可用下标法,也可用指针法。使用下标法,直观;而使用指针法,能使目标程序占用内存少、运行速度快。定义方法与简单变量指针定义相同,但引用略有不同例: int a10; int p; /*定义*/ p=&a0; /*将a的第0个元素的地址赋给p*/ C语言规定: 数组a的首地址即用&a0表示

14、,亦可用a表示 所以:p=&a0; 和 p=a等价10.3.1 指向数组元素的指针 上面也可以这样定义: int a10, *p=&a0; 或 int a10, *p=a;10.3.2 通过指针引用数组元素 C语言的规定:如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素(而不是将p值简单加1)。 如果p的初值为&a0,则: (1) p+i和a+i就是ai的地址,或者说,它们指向a数组的第i个元素。 (2) *(p+i)或*(a+1)是p+i或a+i所指向的数组元素,即ai。如:*(p+5)或*(a+5)就是a5。 (3) 指向数组的指针变量也可以带下标,如pi与*(p+

15、i)等价。例 10.5 用上面提到的四种表达方式输出同一个数组。 #include main()int a5 = 1, 2, 3, 4, 5; int i;int *pa; for(i=0; i5; i+) printf(“a%d=%d”, i, ai); /*数组下标法*/ putchar(n);pa=a; for(i=0; i5; i+) printf(pa%d=%d , i, pai); /*指针下标法*/ putchar(n); for(i=0; i5; i+) printf(*(a+%d)=%d , i, *(a+i); /*指针法1*/ putchar(n); for(pa=a;p

16、aa+5;pa+) printf(*(pa+%d)=%d ,i,*pa); /*指针法2*/ putchar(n);运行结果:a0=1 a1=2 a2=3 a3=4 a4=5pa0=1 pa1=2 pa2=3 pa3=4 pa4=5*(a+0)=1 *(a+1)=2 *(a+2)=3 *(a+3)=4 *(a+4)=5*(pa+0)=1 *(pa+1)=2 *(pa+2)=3 *(pa+3)=4 *(pa+4)=5说明: (1)以上四种输出方法等价。 (2)以上四种方法修改的是同一内存单元内的内容。 在使用指针变量时,有几个问题要注意: (1)指针变量的值是可以改变的,所以必须注意其当前值,否

17、则容易出错。如:p+是合法的,那么能不能a+呢? (2)指向数组的指针变量,可以指向数组以后的内存单元,虽然没有实际意义。 (3)对指向数组的指针变量(px和py)进行算术运算和关系运算的含义 1)可以进行的算术运算,只有以下几种: pxn, px+/+px, px-/-px, px-py pxn:将指针从当前位置向前(+n)或回退(-n)n个数据单位,而不是n个字节。显然,px+/+px和px-/-px是pxn的特例(n=1)。 px-py:两指针之间的数据个数,而不是指针的地址之差。 2)关系运算 表示两个指针所指地址之间、位置的前后关系:前者为小,后者为大。例如,如果指针px所指地址在指

18、针py所指地址之前,则pxpy的值为1。10.3.3 数组名作函数参数数组名作形参时,接收实参数组的起始地址;作实参时,将数组的起始地址传递给形参数组。引入指向数组的指针变量后,数组及指向数组的指针变量作函数参数时,可有种等价形式(本质上是一种,即指针数据作函数参数):(1)形参、实参都用数组名。 例10.6 :void inv (int x ,int n) int temp,i,j,m=(n-1)/2;for(i=0;i=m;i+) j=n-1-i;temp=xi; xi=xj; xj=temp;main () int i,a10=3,7,9,11,0,6,7,5,4,2;printf(“n

19、the original array is:n”);for(i=0;i10;i+) printf(“%d ”,ai);inv(a,10);printf(“nthe array has been inverted:n”);for(i=0;i10;i+) printf(“%d ”,ai);(2)形参、实参都用指针变量例10.7 void inv(int *x,int n)int *p=x+m,temp,*i=x,*j=x+n-1,m=(n-1)/2;for(; i=p; i+,j-)temp= *i; *i= *j; *j=temp ;main()int i,a10=3,7,9,11,0,6,7,

20、5,4,2,*p=a;printf(nthe original array is:n);for(i=0;i10;i+) printf(%d ,ai);inv(p,10);printf(nthe array has been inverted:n);for(i=0;i10;i+) printf(%d ,ai);(3)形参用指针变量、实参用数组名 例10.8 void inv(int *x,int n)int *p=x+m,temp,*i=x,*j=x+n-1,m=(n-1)/2;for(; i=p; i+,j-)temp= *i; *i= *j; *j=temp ;main () int i,a

21、10=3,7,9,11,0,6,7,5,4,2;printf(“nthe original array is:n”);for(i=0;i10;i+) printf(“%d ”,ai);inv(a,10);printf(“nthe array has been inverted:n”);for(i=0;i10;i+) printf(“%d ”,ai);(4)形参用数组名、实参用指针变量 例10.9 void inv(int x ,int n)int temp,i,j,m=(n-1)/2;for(i=0; i=m; i+) j=n-1-i;temp= xi; xi= xj; xj=temp;mai

22、n()int i,a10=3,7,9,11,0,6,7,5,4,2,*p=a;printf(nthe original array is:n);for(i=0;i10;i+) printf(%d ,ai);inv(p,10);printf(nthe array has been inverted:n);for(i=0;i10;i+) printf(%d ,ai);10.3.4 二维数组的指针及其指针变量 1. 二维数组的指针 假设有如下数组定义语句: int array34; (1)从2维数组角度看,数组名array代表数组的起始地址, 是一个以行为单位进行控制的行指针: array+i:行指

23、针值,指向2维数组的第i行。 *(array+i):(列)指针值,指向第i行第列(控制由行转为列,但仍为指针)。 *(*(array+i):数组元素arrayi0的值。 用array作指针访问数组元素arrayij的格式: *(*(array+i)j) array0:array00array01array02array03array10array11array12array13array20array21array22array23注意:行指针是一个级指针。(2)从1维数组角度看,数组名array和第1维下标的每一个值, 共同构成一组新的1维数组名array0、array1、array2,它们

24、均由4个元素组成。 语言规定:数组名代表数组的地址,所以arrayi是第i行1维数组的地址, 它指向该行的第0列元素,是一个以数组元素为单位进行控制的列指针:arrayi+j:(列)指针值,指向数组元素arrayij。*(arrayi+j):数组元素arrayij的值。如果有“int array34,*p=array0;”,则p+1指向下一个元素,如图9-8所示。用p作指针访问数组元素arrayij的格式: *(p+(*每行列数+j) )2.行指针变量指向由n个元素组成的一维数组的指针变量(1)定义格式 数据类型 (*指针变量)n;注意:“*指针变量”外的括号不能缺,否则成了指针数组数组的每个

25、元素都是一个指针指针数组(本章第6节介绍)。(2)赋值行指针变量 2维数组名 | 行指针变量;例10.7 使用行指针和列指针两种方式输出2维数组的任一元素。(1) 使用行指针 例10.10 main() int array34=1,2,3,4,5,6,7,8,9,10,11,12; int (*pointer)4, row, col; pointer=array; printf(“Input row = ”); scanf(“%d”, &row); printf(“Input col = ”); scanf(“%d”, &col); printf(“array%1d%1d = %dn”, ro

26、w, col, *(*(pointer+row)+col); 程序运行情况: Input row = 1 Input col = 2 array12 = 7例10.11 输出二维数组元素。 # include main()int a34=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12;int *p, i, j;p=a0;for(i=0; i3; i+) for(j=0; j4; j+)printf(%d , *(*(a+i)+j); /*指针表示法*/putchar(n); for(i=0; i3; i+) for(j=0; j4; j+)printf(“%d ”,

27、 *(ai+j); /*行数组表示法*/putchar(n);for(i=0; i3; i+) for(j=0; j4; j+) printf(%d , (*(a+i)j); /*列数组表示法*/putchar(n);for(i=0; i3; i+) for(j=0; j4; j+)printf(“%d ”, *p+); /*指针直接表示法1*/putchar(n);for(i=0,p=a0; i3*4; i+) printf(%d , *p+); /*指针直接表示法2*/putchar(n);运行结果:1 2 3 4 5 6 7 8 9 10 11 12(一共有五行) 设有三个学生,各有四门

28、功课,求总的平均分,各学生总分,且将三个学生的成绩按总分排序。要求用指针变量:综合实例:实参可用指向数组的指针变量(实数组名) 实参可用指向一维数组的指针变量;即: 数组名2维数组的指针作函数实参时,有列指针和行指针两种形式。相应的,用来接受实参数组指针的形参,必须使用相应形式的指针变量,如下所示: 实参: 列指针 行指针 形参: (列)指针变量 行指针变量3 用指向数组的指针作函数参数输入三学生单科成绩一、流程图:计算各学生总分计算总平均分按各学生总分排序打印各科成绩总分及总平均分结束调用函数sumscore(p,n)指针,指向一维数组调用函数average(p,n)调用函数sort(p,n

29、)调用函数printscore(p,n)学生人数指向二维数组人数返回值float指向一维数组人数指向二维数组人数main ( ) void sumscore ( ); float average( ); void sort( ); void printscore( ); static float score35=65, 80, 90, 100, 80, 66, 75, 90, 58, 60, 90, 83; sumscore(score, 3); printf(n average=%f, average(score, 3); sort(score, 3); printscore(score,

30、3); 二、程序1) 主函数 void sumscore(p, n) float p; int n; float aver, p_end; p_end=p+5n 1; for (; p=p_end; p=p+5) (p+4) = p + p(p+1) + (p+2) + (p+3); 2) sumscore函数求总分 float average(p, n) float (p)5; int n; float aver=0.0; int i; for (i=0; in; i+) aver=aver+ (p+i)+4); aver=aver/n return(aver); 3) average函数求

31、总平均分有二种方法:(1)循环时用简单变量 (2)循环时用指针变量方法(1)void sort (p, n)float p;int n; int i, j, k, m; float t;三. sort函数排序 for (i=0; in 1; i+) k=i; for (j=i+1; jn; j+) if (p+4+5 i) (p+4+5 j) k=j; if (k!=i) for (m=0; m5; m+) t = (p+m+5 i); (p+m+5 i) = (p+m+5 k); (p+m+5 k)=t; 方法(2)void sort (p, n)float pint n; float p1

32、, p_end, k, t; int m; p_end=p+5 n 1; p=p+4; for (; pp_end 5; p+=5) k=p; for (p1=p+5; p1p_end; p1+=5) if (p p1) k=p1; if (k!=p) for (m=0; m5; m+) t= (p m); (p m)= (k1 m); (k1 m)=t; void printscore(p, n) float (p)5; int n; int i, j;printf(n A B C D sumn);for (i=0; i0; i+) printf(n); for (j=0; jb)retur

33、n a; else return b; main() int (*pmax)(), x,y,z; pmax=max; printf(input two numbers:n); scanf(%d%d,&x,&y); z=(*pmax)(x,y); printf(maxmum=%d,z); 从上述程序可以看出用,函数指针变量形式调用函数的步骤如下:1. 先定义函数指针变量,如后一程序中第9行 int (*pmax)();定义 pmax为函数指针变量。2. 把被调函数的入口地址(函数名)赋予该函数指针变量,如程序中 第11行 pmax=max;3. 用函数指针变量形式调用函数,如程序第14行 z=(

34、*pmax)(x,y); 调用函数的一般形式为: (*指针变量名) (实参表) 10.6 返回指针值的函数 一个函数可以返回一个int型、float型、char型的数据,也可以返回一个指针类型的数据。 返回指针值的函数(简称指针函数)的定义格式如下: 函数类型 *函数名(形参表) 例10.17 某数理化三项竞赛训练组有3个人,找出其中至少有一项成绩不合格者。要求使用指针函数实现。int *seek( int (* pnt_row)3 ) int i=0, *pnt_col; /*定义一个(列)指针变量pnt_col */ pnt_col=*(pnt_row+1); /*使pnt_col指向下一

35、行之首(作标志用)*/ for(; i3; i+) if(*(*pnt_row+i)60) /*某项成绩不合格*/ pnt_col=*pnt_row; /*使pnt_col指向本行之首*/ break; /*退出循环*/ return(pnt_col); /*主函数main()*/main() int grade33=55,65,75,65,75,85,75,80,90; int i,j,*pointer; /*定义一个(列)指针变量pointer */ for(i=0; i3; i+) /*控制每个学生*/ pointer=seek(grade+i); /*用行指针作实参,调用seek()函

36、数*/ if(pointer=*(grade+i) /*该学生至少有一项成绩不合格*/ /*输出该学生的序号和各项成绩*/ printf(“No.%d grade list: ”, i+1); for(j=0; j3; j+) printf(“%d ”,*(pointer+j); printf(“n”); 程序运行结果:No.1 grade list: 55 65 75 程序说明:(1) 主函数中的pointer=seek(grade+i);语句调用seek()函数时,将实参grade+i(行指针)的值,复制到形参pnt_row(行指针变量)中,使形参pnt_row指向grade数组的第i行。

37、(2)在指针函数seek()中: 1) pnt_col=*(pnt_row+1);语句*(pnt_row+1)将行指针转换为列指针,指向grade数组的第i+1行第列,并赋值给(列)指针变量pnt_col。2) if(*(*pnt_row+i)60)行pnt_row是一个行指针,指向数组grade的第i行;*pnt_row使指针由行转换为列,指向数组grade的第i行列;*pnt_row+j的值还是一个指针,指向数组的第i行第j列;*(*pnt_rowj)是一个数据(数组元素gradeij的值)。10.7 指针数组、主函数main()的形参和指向指针的指针10.7.1 指针数组 1.概念 数组

38、的每个元素都是一个指针数据。指针数组比较适合用于指向多个字符串,使字符串处理更加方便、灵活。 2.定义格式 数据类型 *数组名元素个数 注意:与行指针变量定义格式“(*行指针变量)”的差别。例10.18 有若干计算机图书,请按字母顺序,从小到大输出书名。解题要求:使用排序函数完成排序,在主函数中进行输入输出。void sort(char *name, int count) char *temp_p; int i,j,min; /*使用选择法排序*/ for(i=0; icount-1; i+)/*外循环:控制选择次数*/ min=i; /*预置本次最小串的位置*/ for(j=i+1; j0)

39、 /*存在更小的串*/ min=j; /*保存之*/ if(min!=i) /*存在更小的串,交换位置*/ temp_p=namei,namei=namemin,namemin=temp_p; /*主函数main()*/main() char *name5=“BASIC”,”FORTRAN”,”PASCAL”,”C”,”FoxBASE”; int i=0; sort(name,5); /*使用字符指针数组名作实参,调用排序函数sort()*/for(; i5; i+) printf(“%sn”,namei); /*输出排序结果*/ 程序运行结果:BASICCFORTRANFoxBASEPASC

40、AL程序说明:(1)实参对形参的值传递: sort( name , 5 ); void sort(char *name, int count)(2)字符串的比较只能使用strcmp()函数。形参字符指针数组name的每个元素,都是一个指向字符串的指针,所以有strcmp(namemin,namej)。10.7.2 指向指针的指针变量 如果一个指针变量存放的又是另一个指针变量的地址, 则称这个指针变量为指向指针的指针变量。 在前面已经介绍过,通过指针访问变量称为间接访问, 简称间访。由于指针变量直接指向变量,所以称为单级间访。 而如果通过指向指针的指针变量来访问变量则构成了二级或多级间访。 在语言程序中,对间访的级数并未明确限制, 但是间访级数太多时不容易理解解,也容易出错,因此,一般很少超过二级间访。指向指针的指针变量说明的一般形式为: 类型说明符* 指针变量名; 例如: int * pp; 表示pp是一个指针变量,它指向另一个指针变量, 而这个指针变量指向一个整型量。下面举一个例子来说明这种关系。 例10.19 main() int x,*p,*pp; x=10; p=&x; pp=&p; printf(x=%dn,*pp); 上例程序中p 是一个指针变量,指向整型量x;pp也是一个指针变量, 它指向指针变量p。通过pp变量访问x的写法是*pp。程序最后输出x的值为1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论