




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、c語言程序設計10-指針c語言程序設計10-指針 101 指針的概念 簡單地說,指針就是地址。 要掌握指針的概念就必須弄清: 內存地址概念? 變量與地址的關系? 如何通過地址進行變量的存取? 101 指針的概念說明例: 內存用戶數據 1000 3 i 1002 6 j 1004 9 k對變量值的存取總是按地址進行的-直接訪問。int i,j,k;i=3; j=6;k=i+j;程序經編譯后,變量名就不復存在,以地址對應。說明例:int i,j,k;程序經編譯后,變量名就不復存在也可以采用“間接訪問”方式: 先將變量i的地址存放到另一變量p1中,要訪問i時,先取出p1的內容(變量i的地址),再去訪
2、問該地址所對應的內存單元中的內容(變量i的值)。c語言程序設計10-指針 內存用戶數據 1000 3 i 1002 6 j 1004 9 k 2000 1000 p1 2004 1002 p2int i,j,k;i=3; j=6;k=i+j;int *p1, *p2;p1=&i;p2=&j; int 在以上概念的基礎上對指針下定義: 變量的地址就是該變量的指針。 存放地址的變量稱指針變量。 若p1存放了變量i的地址, 則稱p1是指向變量i的指針變量。10001002100410001002ijkp1p2369int i,j,k;i=3; j=6;k=i+j;int *p1, *p2;p1=&i
3、;p2=&j;10001002100410001002ijkp1p2369 102 變量的指針和指向變量的指針變量 變量的指針 指針變量 指向變量的指針變量 用“*”代表“指向” 如*p1代表它所指向的變量i,同一內存單元。 以下兩個語句等價: i=3; 直接訪問 *p1=3; 間接訪問int i,*p1;p1=&i; 102 變量的指針和指向變量的指針變量 內存用戶數據 1000 3 i 1002 6 j 1004 9 k 2002 1000 p1 2004 1002 p2int i,j,k;i=3; j=6;k=i+j;int *p1, *p2;p1=&i;p2=&j;*p1=5;*p2=
4、8;58int i,j,k;58 指針變量的定義 指針變量也必須先定義后使用。 int *p1;注意: *表示該變量為指針變量,但變量名是p1。 一個指針變量只能指向同一類型的變量。 int i,*p1; float a; p1=&i; 合法 p1=&a; 不合法 指針變量的定義 指針變量的引用 兩種用法: 用地址運算符& p1=&i; 用指針運算符* (實行間接訪問) *p1=100; k=*p1; 注意: 指針變量只能放地址(指針)。 p1=100; 不允許 使用指針運算符*之前,p1必須被賦值(即p1必須存放了某個變量的地址) 指針變量的引用例: T10-1.c 注意:要區別定義和引用中
5、的“*”main() int a=100,b=10; int *p1,*p2; 定義指針變量,尚無體指向 p1=&a; p1指向a p2=&b; p2指向b printf(“*p1=%d, *p2=%d n”, *p1, *p2); printf(“&a=%x,& b=%x n”,&a, &b); printf(“p1=%x, p2=%x n”, p1, p2); printf(“& p1=%x, &p2=%x n”, &p1, & p2);運算結果:*p1=100, *p2=10&a=12ff7c,& b=12ff78p1=12ff7c, p2=12ff78&p1=12ff74, &p2=1
6、2ff70例: T10-1.c 注意:要區別定義和引用中的“*”運要特別注意以下用法的后果:egp1.c int *p1; *p1=100;c語言程序設計10-指針例:輸入a和b兩個整數,按先大后小的順序輸出 main() T10-2.c int a,b,*p1, *p2, *p; scanf(“%d,%d”,&a,&b); 1000 5 a p1=&a; p2=&b; 1002 9 b if(ab) p=p1; p1=p2; p2=p; printf(“n %d,%d”,a,b); 2000 p1 printf(“n%d,%d”,*p1,*p2); 2004 p2 2006 p 改變p1和p
7、2的指向10001002100210001000例:輸入a和b兩個整數,按先大后小的順序輸出 main重要概念: 只要將某一變量的地址存入指針變量中,就可通過指針變量間接訪問該變量。 配鑰匙!c語言程序設計10-指針swap(int p1, int p2) int t; t=p1; p1=p2; p2=t; 1000 5 a 1002 9 b main() int a,b; scanf(“%d,%d”,&a,&b); 2000 p1 if(ab)swap(a, b); 2004 p2 printf(“n %d,%d”,a,b); 2006 t T10-3-1.c59595例 不用指針變量作函數
8、參數,將兩個整數按大小順序輸出。怎樣直接修改a、b的值呢?修改原件用指針!swap(int p1, int p2)59595例 指針變量作為函數的參數 可將指針變量作函數的參數,接受實參地址,獲得具體指向,進而通過指針變量間接訪問主調函數的變量。 指針變量作為函數的參數例T10-3.c用指針變量作函數參數,將兩個整數按大小順序輸出。swap(int *p1, int *p2) int t; t=*p1; *p1=*p2; *p2=t; 1000 5 a 1002 9 b main() int a,b; scanf(“%d,%d”,&a,&b); 2000 p1 if(ab)swap(&a,&b
9、); 2004 p2 printf(“n %d,%d”,a,b); 2006 t 10001002595例T10-3.c用指針變量作函數參數,將兩個整數按大小順序輸 重要概念:使用指針變量作函數參數,被調函數可以將多個結果交給主調函數。 數組名做參數,可返回該數組所有元素 還記得那個求成績最高、最低和平均值的例子?還需要用全局變量嗎?c語言程序設計10-指針例T10-4-2.c :求n個數的最大值、最小值和平均值。float aver(int a, int n, int *max, int *min) int i; float s=0; *max=a0; *min=a0; for(i=0;i*
10、max) *max=ai; if(ai*min) *min=ai; return(s/100);main() int a100,i,max,min;float av;for(i=0;i100;i+) scanf(“%d”,&ai);av=aver(a,100,&max,&min);printf(“ %d,%d,%f”,max,min,av);例T10-4-2.c :求n個數的最大值、最小值和平均值。m例T10-4-1.c :編寫函數,求一元二次方程的兩個實根。#include “math.h” ? root(float a,float b,float c, ) float d; d=b*b-4
11、*a*c; if(d0|a=0)return(0); ? =(-b+sqrt(d)/2/a; ? =(-b-sqrt(d)/2/a; return(1); float *x1, float *x2 *x1 *x2 int main() int k; float a,b,c,x1,x2; scanf(“%f,%f,%f”,&a,&b,&c); k=root(a,b,c,&x1,&x2); if(k) printf(“n %f,%f”,x1,x2); 輸入:1, -10 ,25輸出:5.000000,5.000000函數參數:如不需改變(只讀):一般參數如需改變(讀寫):指數參數例T10-4-1.
12、c :編寫函數,求一元二次方程的兩個實根。 103 數組的指針和指向數組的指針變量數組有一個首地址: 數組的指針。每個數組元素也都有地址: 數組元素的指針。532168742000200220042006 103 數組的指針和指向數組的指針變量5321687 指向數組元素的指針變量 int a10,*p; p=a; 指向數組 p=&a0; 指向數組元素 51247680392000200220042006p 指向數組元素的指針變量51247680392000 通過指針引用數組元素 int a10,*p; p=&a0; 或者 p=a; /p指向a0 *p=1; 等效于a0=1; 即可通過p來訪問
13、a0也可以通過p來訪問其它元素: *(p+1)=3; 等效于a1=3; 其中p+1指向a1注意:p+1不是地址加1,而是加一個數據類型單位。 通過指針引用數組元素一般地,當p指向a0時,即p=&a0; 或者 p=a; p+i a+i &ai*(p+i) *(a+i) ai pi即以下幾個語句等效:ai=10; *(p+i)=10; *(a+i)=10; pi=10;c語言程序設計10-指針舉例:用三種方法輸出數組元素例T10-5-1.c 用“數組名+下標”的方法main()int i, a5;for(i=0; i5; i+) scanf(“%d”,&ai);for(i=0; i5; i+)pr
14、intf(“&a%d=%x, a%d=%d n”, i,&ai, i, ai );輸入: 55 66 77 88 99 輸出: &a0=ffce, a0=55 &a1=ffd0, a1=66 &a2=ffd2, a2=77 &a3=ffd4, a3=88 &a4=ffd6, a4=99 ffcc 55 a0ffce 66 a1ffd0 77 a2ffd2 88 a3ffd4 99 a4ffd6 a5舉例:用三種方法輸出數組元素輸出:ffcc 舉例:用三種方法輸出數組元素例T10-5-2.c 計算“數組名計算地址”的方法main() int i, a5; for(i=0;i5;i+) scanf
15、(“%d”,a+i); for(i=0;i5;i+)printf(“a+%d)=%x,*(a+%d)=%d n”,i,(a+i), i,*(a+i);輸出: (a+0)=ffcc, *(a+0)=55 (a+1)=ffce, *(a+1)=66 (a+2)=ffd0, *(a+2)=77 (a+3)=ffd2, *(a+3)=88 (a+4)=ffd4, *(a+4)=99 ffcc 55 a0ffce 66 a1ffd0 77 a2ffd2 88 a3ffd4 99 a4ffd6 a5舉例:用三種方法輸出數組元素輸出:ffcc 舉例:用三種方法輸出數組元素例T10-5-3_new.c 用“指
16、針變量+下標”的方法(指針法I )main()int *p, a5,i; p=a;for(i=0;i5;i+) scanf(“%d”,p+i);for(i=0;i5;i+)printf(&p%d=%x, p%d=%d, *(p+%d)=%dn,i,&pi,i,pi,i,*(p+i);12ff6c 55 p012ff70 66 p112ff74 77 p212ff78 88 p312ff7c 99 p4輸出:&p0=12ff6c, p0=55, *(p+0)=55&p1=12ff70, p1=66, *(p+1)=66&p2=12ff74, p2=77, *(p+2)=77&p3=12ff78,
17、 p3=88, *(p+3)=88&p4=12ff7c, p4=99, *(p+4)=99舉例:用三種方法輸出數組元素12ff6c 55 舉例:用三種方法輸出數組元素(例T10-5-4_new.c )用“指針變量指向數組元素”法(指針法II)main()int *p, a5; for(p=a; p (a+5); p+)scanf(“%d”,p+i); for(p=a; p (a+5); p+)printf(“p=%x, *p=%d n”, p,*p);輸出:p=12ff6c,*p=55p=12ff70,*p=66p=12ff74,*p=77p=12ff78,*p=88p=12ff7c,*p=9
18、912ff6c 55 a012ff70 66 a112ff74 77 a212ff78 88 a312ff7c 99 a4p+: 合法, 因p是指針變量,而變量可以用 +運算符的a+: 不合法, 因為a是數組名,其值是數組元素的首地址,分配之后不可變。舉例:用三種方法輸出數組元素(例T10-5-4_new.c 舉例:用三種方法輸出數組元素(例T10-5-4.c )指針變量當作數組名使用(混合指針法) main() int a5,*p=a,i; for(p=a;pa+5;p+) scanf(“%d”,p); p=a;/不能漏! for(i=0;i5;i+) printf(“&p%d=%x,p%d
19、=%d,*(p+%d)=%dn”, i,&pi, i,pi,i,*(p+i); 輸出:&p0=12ff6c,p0=55,*(p+0)=55&p1=12ff70,p1=66,*(p+1)=66&p2=12ff74,p2=77,*(p+2)=77&p3=12ff78,p3=88,*(p+3)=88&p4=12ff7c,p4=99,*(p+4)=9912ff6c 55 p12ff70 66 p+112ff74 77 p+212ff78 88 p+312ff7c 99 p+4舉例:用三種方法輸出數組元素(例T10-5-4.c )輸出:通過指針引用數組元素的方法小結例:累加求和的各種用法:int *p,
20、a10;s=0;p=a;for(i=0;i10;i+)s+=ai;for(i=0;i10;i+)s+=*(a+i);for(i=0;i10;i+)s+=*(p+i);for(i=0;i10;i+)s+=pi;for(i=0;i10;i+)s+=*p+; for(p=a;pa+10;p+)s+=*p; 最后一種用法效率高。數組元素地址法指針法I指針變量指向數組元素指針法II指針變量當作數組名注意不能使用a+通過指針引用數組元素的方法小結數組元素地址法指針法I指針法I指針變量使用時的幾個問題, 若p當前指向a數組的第i個元素,則:10-plus.c *p:是取出ai的值. p + :指針指向ai+
21、1. *p+ :等價于*(p+)及ai+ ,優先級同為2,從右向左結合,將 ai 的值取出, 后再使 p增1(不是單純的加一,是p指向ai+1). * (+p):與a+i等價,先將p指向ai+1,然后將該元素取出. (*p)+:將p所指的數組元素ai的值取出,使ai的值增1. p- :指針指向ai-1. *(p-):與ai-等價, 將p 所指向的第i個數組元素取出,然后使p指向i-1元素. *(-p):與a- i等價,先將p減1指向第i-1個元素,然后將其取出. (*p)-:將p所指的數組元素ai的值取出,使ai的值減1.指針變量使用時的幾個問題, 數組名作為函數參數 有了指針概念的基礎上,重
22、新回顧數組名作為函數參數時,數據的傳遞情況:void sort(int a, int n)void sort(int *a, int n)數組名作為函數參數 例:選擇法排序函數 void sort(int *a, int n)例T10-7-1.c int i,j,t; for(i=0;in-1;i+) for(j=i+1;jaj)t=ai; ai=aj; aj=t; 只將形參改為指針變量,仍按下標法使用 void sort(int *a, int n) int i,j,t; for(i=0;in-1;i+) for(j=i+1;j*(a+j) t=*(a+i); *(a+i)= *(a+j);
23、 *(a+j)=t; 按指針法使用例T10-7-2.c 例:選擇法排序函數 void sort(int *a進一步優化:都用指針,效率更高! (例T10-7-3.c )void sort(int *a, int n) int *i, *j,t; for(i=a;ia+n-1;i+) for(j=i+1;j*j) t=*i; *i=*j; *j=t; main() int a10,j; for(j=0;j10;j+)scanf(“%d”,a+j); sort(a,10); for(j=0;j10;j+)printf(“%5d”,aj); 進一步優化:都用指針,效率更高! (例T10-7-3.c
24、分段排序?例T10-7-4.c main() int a10,j; for(j=0;j10;j+)scanf(“%d”,a+j); for(j=0;j10;j+)printf(“%5d”,aj); sort(a,5);sort(a+5,5);void sort(int *a, int n) int *i, *j,t; for(i=a;ia+n-1;i+) for(j=i+1;j*j) t=*i; *i=*j; *j=t; 分段排序?例T10-7-4.c sort(a,5);sort 指向多維數組的指針和指針變量 從本質上說,多維數組的指針與一維數組的指針相同,但在概念上和使用上,多維數組的指針
25、要復雜些。 以二維數組的指針為例: 指向多維數組的指針和指針變量 二維數組的地址 :一維:a,&ai,a+i 二維:aa+i (行指針:指向第i行)ai *(a+i) (特殊的一維數組,列指針,指向行中的列)ai+j *(a+i)+j &aij int a34 1357911131517192123100010081016a+0a+1a+2a0討論以下用法的效果:T10-8-1.cfor(i=0;i3;i+) scanf(“%d”,a+i);輸入數據:1 2 3討論以下用法的效果:T10-8-2.cfor(i=0;i3;i+) scanf(“%d”,a1+i);輸入數據:1 2 3討論以下用法
26、的效果:T10-8-3.cfor(i=0;i3;i+) scanf(“%d”,a1+i+2);輸入數據:1 2 3討論以下用法的效果:T10-8-4.cfor(i=0;i3;i+) scanf(“%d”,a+i+1);輸入數據:1 2 3a0+1a0+2a0+3二維數組的地址 :int a34 1357911一維數組與二維數組的比較第i個一維數組的第j個元素的地址無意義*(a+i)+j第i個一維數組的第j個元素的值無意義*(*(a+i)+j)第i個一維數組的值第i個一維數組的首地址第i個元素的值*(a+i)第i個元素 的地址一維數組第i個元素的地址a+i二維數組的首地址一維數組的首地址a二維數
27、組一維數組一維數組與二維數組的比較第i個一維數組的第j個元素的地址無意注意:指針運算符*作用在行指針上的結果仍是指針-列指針; *作用在列指針上的結果-具體元素。 *(a+0),*(a+1),*(a+2) 仍是地址。*(a+i) ai *(a0),*(a1),*(a1) 具體元素值。*(ai)*(a+i)+j 也是地址,但要區別: (a+i)+j行指針 (a+1)+1 ? *(a+i)+j列指針 *(a+1)+1 ? 100010081016a+0a+1a+2a0a1a2*(a+1)1357911131517192123注意:100010081016a+0a+1a+2a0a 如果要通過a+i形
28、式的地址訪問數組元素的具體內容,則:*(*(a+i) 或 *(*(a+i)+j)如:*(*(a+1) a10 *(*(a+1)+2) a12討論:例T10-8-5.c*(a+2) *(*(a+1)+3) *(a1+1) *(*(a+1)+5)123456789111012 如果要通過a+i形式的地址訪問數組元素的具體內容,則:1例:求數組a的所有元素之和。 可有多種用法:例T10-9-1.cT10-9-3.c M行N列for(i=0;iM;i+) for(i=0;iM;i+)for(j=0;jN;j+) for(j=0;jN;j+)s+=aij; s+=*(ai+j);for(i=0;iM;i
29、+)for(j=0;jN;j+) s+=*(*(a+i)+j); aij*(ai+j)*(*(a+i)+j)例:求數組a的所有元素之和。aij*(ai+j指向二維數組的指針變量 同樣可使一個指針變量p指向二維數組a,再通過p訪問數組元素。例T10-10.cmain() int a34=1,2,3,4,5,6,7,8,9,10,11,12; int i,k,*p; p=a; k=*p;? k=*(p+2);? for(p=a;pa+2;p+)printf(“%3d,”,*p); ?N列:aij*(p+i*N+j)pi*N+j123456789101112k=p12; 不合法k=*(*(p+1)+
30、2);k=p1*4+2; 合法k=*(p+1*4+2);指向二維數組的指針變量123456789101112k=p例:求矩陣的上三角元素之和。例T10-11.cmain() int a34,*p,i,j,s=0; 輸入a p=a; for(i=0;i3;i+) for(j=i;j4;j+) s+=pi*4+j; 或 s+=*(p+4*i+j) printf(“n %d”,s); /s=54N列:aij*(p+i*N+j)pi*N+j123456789101112例:求矩陣的上三角元素之和。例T10-11.c1234567 多維數組的指針作函數參數 用于接受實參數組地址的形參可用兩種:行指針和列
31、指針。 以方陣轉置為例:例T10-13-1.c void at(int (*p)3) 用行指針 int i,j,t; 缺點:不通用(必須制定列數) for(i=0;i3;i+) for(j=i+1;j3;j+) t=pij; pij=pji; pji=t; p指向一個包含3個整形元素的一維數組(行指針),p相當于一個二維數組! 多維數組的指針作函數參數用列指針:例T10-13-2.c void at(int *p,int n) /n為列數 int i,j,t; for(i=0;in;i+) for(j=i+1;jn;j+) t=pi*n+j; pi*n+j=pj*n+i; pj*n+i=t;
32、優點:通用 在編通用函數時,一般使用列指針。用列指針:例T10-13-2.c 用列指針:例T10-13-3.c int sum(int *p,int m,int n) /m行n列 int i,j,s=0; for(i=0;im;i+) for(j=i;jn;j+) s+=pi*n+j; 或 s+=*(p+n*i+j) return(s); 優點:通用 在編通用函數時,一般使用列指針。用列指針:例T10-13-3.c 104 字符串的指針和指向字符串的指針變量 字符串的表示形式 可用兩種方法訪問字符串: 用字符數組存放字符串 用字符指針指向一個字符串104 字符串的指針和指向字符串的指針變量例T
33、10-14.cmain() char str5=”abc”; 定義字符數組,并將字符串存入 char *p=str; 定義指針變量,指向字符串 printf(“%s”,str); 通過數組名訪問字符串 printf(“%s”,p); 通過指針變量訪問字符串 printf(“%c”,*(p+2); 通過指針變量訪問字符 strabc0abc010001000p例T10-14.cstrabc0abc010001000 與其它一維數組的指針相比,字符串的指針有其獨特之處: 可以通過指針對字符串進行整體訪問。 對字符串的操作依賴于結束符。 可以整體賦初值。 有各種字符串處理函數。 與其它一維數組的指針
34、相比,字符串的指針有其獨特之處: 本節重點掌握: 通過數組和通過指針操作字符串的基本方法。 常用的字符串處理方法。 本節重點掌握:例:字符串拷貝操作。例T10-15-1.c,例T10-15-2.cmain() char a=”abcdef”,b20; int i; for(i=0; *(a+i)!=0; i+) *(b+i)=*(a+i); *(b+i)=0; printf(“%s”,b);main() char a=”abcdef”,b20,*p1, *p2; p1=a; p2=b; for( ; *p1!=0;p1+,p2+) *p2=*p1; *p2=0; printf(“%s”,b);
35、用指針變量處理例:字符串拷貝操作。例T10-15-1.c,例T10-15-將拷貝操作編成一函數:例T10-15-3.c,例T10-15-4.cvoid copy_string(char *from,char *to) for(; *from; from+,to+) *to=*from; *to=0;還可以改成:void copy_string(char *from,char *to) for(; *from;) *to+=*from+; *to=0;將拷貝操作編成一函數:例T10-15-3.c,例T10-15字符串合并函數:例T10-16.c,void append_string(char *
36、from,char *to) for(;*to; to+); for(; *from;) *to+=*from+; *to=0; 字符串合并函數:例T10-16.c,閱讀程序:例T10-17.cvoid f (char *c) main() c+=2; char c20=”abcdef”; (*c)+; f(c+1); c+; *c=0; printf(“%s”,c); 閱讀程序:例T10-17.c內存空間的動態分配 在程序設計中,對于要處理的批量數據,我們往往是選用數組作為存放這些數據的數據結構,然而,數組有一個明顯的缺點,就是在定義數組時,其長度必須是常值,無法根據需要動態地定義。這樣,在
37、很多情況下,不是定義的數組長度不夠,就是定義太長以至于浪費。 采用動態分配可以克服這一缺點,并且可以隨時釋放。 內存空間的動態分配 動態分配內存空間步驟: 定義一指針變量。 申請一片內存空間,并將其首地址賦給指針變量。此時便可通過指針變量訪問這片內存;不成功則返回地址為0 用完后釋放這片內存空間。 int *p; p=malloc(字節數); free(p);sizeof(類型):返回該類型數據在當前編譯系統中所占的字節數。以上函數的原形在stdio.h中。p 動態分配內存空間步驟:p例:對n個學生的分數排序后輸出。例T10-18.c #include “stdio.h”void sort(i
38、nt *a, int n) main() int *a,j,n; scanf(“%d”,&n); a=malloc(n*sizeof(int); if(!a) exit(0); for(j=0;jn;j+) scanf(“%d”,a+j); sort(a,n); for(j=0;jy) z=x; else z=y; return(z);main() int (*p)(); 定義指向函數的指針變量p int a,b,c; p=max; 將p指向函數max scanf(“%d%d”,&a,&b); c=(*p)(a,b); 通過p調用函數max 等效于c=max(a,b); printf(“n %
39、d”,c);例T10-19.cint max(int x, int y)把指向函數的指針變量作為函數參數 指向函數的指針變量最常見的用途是把它作為函數的參數,用于接受主調函數傳來的某一函數的入口地址,從而在被調函數中可以通過該指針變量調用它所指向的函數,這樣,被調函數中就可實現非固定函數的調用,以達到編寫通用函數的目的。 例:用矩形法編寫一個通用的求定積分的函數。關鍵問題:如何處理被積函數是未知的。把指向函數的指針變量作為函數參數double intgral (double a,double b,int n, double (*f)() ) int i; double h,x,y,s=0; h=(b-a)/n; for(i=1;i=n;i+) x=a+(i-1)*h; y=(*f)(x); s+=h*y; return(s);例T10-20.cdouble f1(double x) return(3*x*x+2*x-1);main() double s; s=intgral(1.0,2.0,100
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 團總支成員管理制度
- 國標工作票管理制度
- 場內掃地車管理制度
- 培訓班住宿管理制度
- 培訓班簽到管理制度
- 基金運營部管理制度
- 墨西哥外匯管理制度
- 復印打印店管理制度
- 消防儀器設備管理制度
- 淘寶員工考勤管理制度
- 2023年蕪湖一中高一自主招生考試試題數學
- 天津理工大學-PPT 答辯3
- 引體向上教學設計
- 中心靜脈導管護理
- 江蘇省南京市聯合體2022-2023八年級初二下學期期中英語試卷+答案
- 事業單位崗位職數情況表
- 糖尿病的外周血管病變和處置培訓課件
- Ф9.52銅管表冷器計算書
- 鉆沖孔灌注樁監理實施細則
- GB/T 21352-2022地下礦井用鋼絲繩芯阻燃輸送帶
- GB/T 5211.12-2007顏料水萃取液電阻率的測定
評論
0/150
提交評論