版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 C程序設(shè)計(jì)程序設(shè)計(jì)主講人:袁麗主講人:袁麗燕大里仁基礎(chǔ)教學(xué)部第九章:善于利用指針第九章:善于利用指針1 指針的概念和指針變量指針的概念和指針變量2 數(shù)組指針和指向數(shù)組的指針變量數(shù)組指針和指向數(shù)組的指針變量3 字符串指針和指向字符串的指針變量字符串指針和指向字符串的指針變量4 指針數(shù)組和指向指針的指針指針數(shù)組和指向指針的指針5 指針小結(jié)指針小結(jié) 地址指針的基本概念地址指針的基本概念一、指針變量一、指針變量 如何定義指針變量如何定義指針變量 如何引用指針變量如何引用指針變量 指針變量作為函數(shù)參數(shù)指針變量作為函數(shù)參數(shù)引:指針是什么引:指針是什么u如果在程序中定義了一個(gè)變量,在對(duì)程序進(jìn)行編譯時(shí),系如
2、果在程序中定義了一個(gè)變量,在對(duì)程序進(jìn)行編譯時(shí),系統(tǒng)就會(huì)給該變量分配內(nèi)存單元統(tǒng)就會(huì)給該變量分配內(nèi)存單元u編譯系統(tǒng)根據(jù)程序中定義的變量類型,分配一定長(zhǎng)度的空編譯系統(tǒng)根據(jù)程序中定義的變量類型,分配一定長(zhǎng)度的空間間u例如,例如,VC+VC+為整型變量分配為整型變量分配4 4個(gè)字節(jié),對(duì)單精度浮點(diǎn)型個(gè)字節(jié),對(duì)單精度浮點(diǎn)型變量分配個(gè)字節(jié),對(duì)字符型變量分配個(gè)字節(jié)變量分配個(gè)字節(jié),對(duì)字符型變量分配個(gè)字節(jié)n務(wù)必弄清楚存儲(chǔ)單元的地址和存儲(chǔ)單元的內(nèi)容這兩個(gè)概務(wù)必弄清楚存儲(chǔ)單元的地址和存儲(chǔ)單元的內(nèi)容這兩個(gè)概念的區(qū)別念的區(qū)別n例如:例如:u內(nèi)存區(qū)的每一個(gè)字節(jié)有一個(gè)編號(hào),這就是內(nèi)存區(qū)的每一個(gè)字節(jié)有一個(gè)編號(hào),這就是“地址地址”
3、,它相當(dāng),它相當(dāng)于旅館中的房間號(hào)。于旅館中的房間號(hào)。u在地址所標(biāo)識(shí)的內(nèi)存單元中存放數(shù)據(jù),這相當(dāng)于旅館房間中在地址所標(biāo)識(shí)的內(nèi)存單元中存放數(shù)據(jù),這相當(dāng)于旅館房間中居住的旅客一樣。居住的旅客一樣。u由于通過地址能找到所需的變量單元,我們可以說,地址指由于通過地址能找到所需的變量單元,我們可以說,地址指向該變量單元。向該變量單元。u將地址形象化地稱為將地址形象化地稱為“指針指針”int i=3,j=6,k;int i=3,j=6,k;printf(“%d”,i);printf(“%d”,i);通過變量名通過變量名i找到找到i的地址的地址2000,從而從存,從而從存儲(chǔ)單元讀取儲(chǔ)單元讀取3int i=3,
4、j=6,k;int i=3,j=6,k;k=i+j;k=i+j;從這里取從這里取3將將9送到這里送到這里從這里取從這里取6直接存取直接存取int i=3,j=6,k;int i=3,j=6,k;定義特殊變量定義特殊變量i_pointeri_pointer將將i的地址的地址存到這里存到這里間接存取間接存取i_pointer=&i;i_pointer=&i;* *i_pointer=50;i_pointer=50;5050i i200032000i_pointeri_pointer* *i_pointeri_pointer20003直接存取直接存取間接存取間接存取為了表示將數(shù)值送到
5、變量中,可以有兩種表達(dá)方法:為了表示將數(shù)值送到變量中,可以有兩種表達(dá)方法:(1) (1) 將將3 3直接送到變量直接送到變量i i所標(biāo)識(shí)的單元中,例如:所標(biāo)識(shí)的單元中,例如:i=3; i=3; (2) (2) 將將3 3送到變量送到變量i_pointeri_pointer所指向的單元即變量所指向的單元即變量i i的存儲(chǔ)的存儲(chǔ)單元),例如:?jiǎn)卧?,例如? *i_pointer=3; i_pointer=3; 其中其中* *i_pointeri_pointer表示表示i_pointeri_pointer指指向的對(duì)象向的對(duì)象指向就是通過地址來體現(xiàn)的指向就是通過地址來體現(xiàn)的假設(shè)假設(shè)i_pointer
6、i_pointer中的值是變量的地址中的值是變量的地址(2000)(2000),這樣就在,這樣就在i_pointeri_pointer和變量之間建立起一種聯(lián)系,即通過和變量之間建立起一種聯(lián)系,即通過i_pointeri_pointer能知道能知道i i的地址,從而找到變量的地址,從而找到變量i i的內(nèi)存單元的內(nèi)存單元由于通過地址能找到所需的變量單元,因此說,地址指由于通過地址能找到所需的變量單元,因此說,地址指向該變量單元向該變量單元將地址形象化地稱為將地址形象化地稱為“指針指針”。意思是通過它能找到以。意思是通過它能找到以它為地址的內(nèi)存單元它為地址的內(nèi)存單元一個(gè)變量的地址稱為該變量的一個(gè)變量
7、的地址稱為該變量的“指針指針”例如,地址例如,地址20002000是變量的指針是變量的指針如果有一個(gè)變量專門用來存放另一變量的地址即指針),如果有一個(gè)變量專門用來存放另一變量的地址即指針),則它稱為則它稱為“指針變量指針變量”i_pointeri_pointer就是一個(gè)指針變量。指針變量就是地址變量,用就是一個(gè)指針變量。指針變量就是地址變量,用來存放地址的變量,指針變量的值是地址即指針)來存放地址的變量,指針變量的值是地址即指針)“指針和指針和“指針變量是不同的概念指針變量是不同的概念可以說變量可以說變量i i的指針是的指針是20002000,而不能說,而不能說i i的指針變量是的指針變量是2
8、0002000指針是一個(gè)地址,而指針變量是存放地址的變量指針是一個(gè)地址,而指針變量是存放地址的變量定義指針變量定義指針變量定義指針變量的一般形式為:定義指針變量的一般形式為: 類型類型 * * 指針變量名指針變量名; ; 其中,其中,* *表示這是一個(gè)指針變量,變量名即為定義的指針變量表示這是一個(gè)指針變量,變量名即為定義的指針變量名,類型說明符表示本指針變量所指向的變量的數(shù)據(jù)類型名,類型說明符表示本指針變量所指向的變量的數(shù)據(jù)類型如:如:int int * *pointer_1, pointer_1, * *pointer_2;pointer_2;intint是為指針變量指定的是為指針變量指定的
9、“基類型基類型”基類型指定指針變量可指向的變量類型基類型指定指針變量可指向的變量類型如如pointer_1pointer_1可以指向整型變量,但不能指向浮點(diǎn)型變量可以指向整型變量,但不能指向浮點(diǎn)型變量如:如: int int * *p1;p1;表示表示p1p1是一個(gè)指針變量,它的值是某個(gè)整型變量的地址。是一個(gè)指針變量,它的值是某個(gè)整型變量的地址。或者說或者說p1p1指向一個(gè)整型變量。至于指向一個(gè)整型變量。至于p1p1究竟指向哪一個(gè)整型變量,究竟指向哪一個(gè)整型變量,應(yīng)由向應(yīng)由向p1p1賦予的地址來決定。賦予的地址來決定。引用指針變量引用指針變量n在引用指針變量時(shí),可能有三種情況:在引用指針變量時(shí)
10、,可能有三種情況:n給指針變量賦值。如:給指針變量賦值。如:p=&a;p=&a;n引用指針變量指向的變量。如有引用指針變量指向的變量。如有n p=&a; p=&a; * *p=1;p=1;n 則執(zhí)行則執(zhí)行printf(“%d”,printf(“%d”,* *p); p); 將輸出將輸出1 1n引用指針變量的值。如:引用指針變量的值。如:printf(“%o”,p);printf(“%o”,p);使使p指向指向a*p相當(dāng)于相當(dāng)于a以八進(jìn)制輸以八進(jìn)制輸出出a的地址的地址要熟練掌握兩個(gè)有關(guān)的運(yùn)算符:要熟練掌握兩個(gè)有關(guān)的運(yùn)算符:(1) (1) 取地址運(yùn)算符。取地址運(yùn)算符
11、。 &a &a是變量是變量a a的地址的地址(2) (2) * * 指針運(yùn)算符(指針運(yùn)算符(“間接訪問運(yùn)算符)間接訪問運(yùn)算符) 假設(shè):假設(shè): p p指向變量指向變量a a,那么,那么* *p p就代表就代表a a。 k= k=* *p; (p; (把把a(bǔ) a的值賦給的值賦給k) k) * *p=1; (p=1; (把把1 1賦給賦給a) a) 設(shè)有指向整型變量的指針變量設(shè)有指向整型變量的指針變量p p,如要把整型變量,如要把整型變量a a 的地址賦予的地址賦予p p可以有以下兩種方式:可以有以下兩種方式:1. 1.指針變量初始化的方法指針變量初始化的方法 int a; int
12、a; int int * *p=&a;p=&a;2. 2.賦值語句的方法賦值語句的方法 int a; int a; int int * *p; p; p=&a; p=&a;注:注:1. 1.不允許把一個(gè)數(shù)賦予指針變量,故下面的賦值是錯(cuò)誤的:不允許把一個(gè)數(shù)賦予指針變量,故下面的賦值是錯(cuò)誤的:int int * *p; p;p=1000;p=1000;2. 2.被賦值的指針變量前不能再加被賦值的指針變量前不能再加“* *”說明符,說明符, 如寫為如寫為* *p=&a p=&a 也是錯(cuò)誤的。也是錯(cuò)誤的。假設(shè)假設(shè): : int i=200, x; int
13、 i=200, x; int int * *ip;ip;我們定義了兩個(gè)整型變量我們定義了兩個(gè)整型變量i,x,i,x,還定義了一個(gè)指向整型數(shù)的指針變量還定義了一個(gè)指向整型數(shù)的指針變量ip ip。i,xi,x中可存放整數(shù)中可存放整數(shù), ,而而ip ip中只能存放整型變量的地址。我們可以把中只能存放整型變量的地址。我們可以把i i的的地址賦給地址賦給ip: ip=&i;ip: ip=&i;此時(shí)指針變量此時(shí)指針變量ip ip指向整型變量指向整型變量i, i,假設(shè)變量假設(shè)變量i i的地址為的地址為1800,1800,這個(gè)賦值這個(gè)賦值可形象理解為下圖所示的聯(lián)系。可形象理解為下圖所示的聯(lián)系。
14、以后我們便可以通過指針變量以后我們便可以通過指針變量ip ip間接訪問變量間接訪問變量i, i,例如例如: : x= x=* *ip;ip;運(yùn)算符運(yùn)算符* *訪問以訪問以ip ip為地址的存儲(chǔ)區(qū)域?yàn)榈刂返拇鎯?chǔ)區(qū)域, ,而而ip ip中存放的是變量中存放的是變量i i的地址的地址, ,因因此此, ,* *ip ip訪問的是地址為訪問的是地址為18001800的存儲(chǔ)區(qū)域的存儲(chǔ)區(qū)域( (因?yàn)槭钦麛?shù)因?yàn)槭钦麛?shù), ,實(shí)際上是從實(shí)際上是從18001800開始開始的兩個(gè)字節(jié)的兩個(gè)字節(jié)), ),它就是它就是i i所占用的存儲(chǔ)區(qū)域所占用的存儲(chǔ)區(qū)域, , 所以上面的賦值表達(dá)式等價(jià)于所以上面的賦值表達(dá)式等價(jià)于 x=
15、i; x=i;另外另外, ,指針變量和一般變量一樣指針變量和一般變量一樣, ,存放在它們之中的值是可以改變的存放在它們之中的值是可以改變的, ,也就是說可以改變它們的指向也就是說可以改變它們的指向, ,假設(shè)假設(shè)int i,j,int i,j,* *p1,p1,* *p2;p2; i=a; i=a; j=b; j=b;p1=&i;p1=&i;p2=&j;p2=&j;則建立如下圖所示的聯(lián)系則建立如下圖所示的聯(lián)系: :這時(shí)賦值表達(dá)式這時(shí)賦值表達(dá)式: :p2=p1p2=p1就使就使p2p2與與p1p1指向同一對(duì)象指向同一對(duì)象i, i,此時(shí)此時(shí)* *p2p2就等價(jià)于就等價(jià)
16、于i, i,而不是而不是j, j,圖所示圖所示: :如果執(zhí)行如下表達(dá)式如果執(zhí)行如下表達(dá)式: : * *p2=p2=* *p1;p1;則表示把則表示把p1p1指向的內(nèi)容賦給指向的內(nèi)容賦給p2p2所指的區(qū)域所指的區(qū)域, , 此時(shí)就變成圖所示此時(shí)就變成圖所示: : 例:例: 輸入輸入a和和b兩個(gè)整數(shù),按先大后小的順兩個(gè)整數(shù),按先大后小的順序輸出序輸出a和和b。解題思路:用指針方法來處理這個(gè)問題。不解題思路:用指針方法來處理這個(gè)問題。不交換整型變量的值,而是交換兩個(gè)指針變交換整型變量的值,而是交換兩個(gè)指針變量的值。量的值。#include #include int main()int main() i
17、nt int * *p1,p1,* *p2,p2,* *p,a,b; p,a,b; printf(“integer numbers:); printf(“integer numbers:); scanf(“%d,%d”,&a,&b); scanf(“%d,%d”,&a,&b); p1=&a; p2=&b; p1=&a; p2=&b; if(ab) if(ab) p=p1; p1=p2; p2=p; p=p1; p1=p2; p2=p; printf(“a=%d,b=%dn”,a,b); printf(“a=%d,b=%dn”,a,
18、b); printf(“%d,%dn”, printf(“%d,%dn”,* *p1,p1,* *p2); p2); return 0; return 0; abp1p2p59&a&b成立成立#include #include int main()int main() int int * *p1,p1,* *p2,p2,* *p,a,b; p,a,b; printf(“integer numbers:); printf(“integer numbers:); scanf(“%d,%d”,&a,&b); scanf(“%d,%d”,&a,&b);
19、p1=&a; p2=&b; p1=&a; p2=&b; if(ab) if(ab) p=p1; p1=p2; p2=p; p=p1; p1=p2; p2=p; printf(“a=%d,b=%dn”,a,b); printf(“a=%d,b=%dn”,a,b); printf(“%d,%dn”, printf(“%d,%dn”,* *p1,p1,* *p2); p2); return 0; return 0; abp1p2p59&a&b&b&a#include #include int main()int main() int i
20、nt * *p1,p1,* *p2,p2,* *p,a,b; p,a,b; printf(“integer numbers:); printf(“integer numbers:); scanf(“%d,%d”,&a,&b); scanf(“%d,%d”,&a,&b); p1=&a; p2=&b; p1=&a; p2=&b; if(ab) if(ab) p=p1; p1=p2; p2=p; p=p1; p1=p2; p2=p; printf(“a=%d,b=%dn”,a,b); printf(“a=%d,b=%dn”,a,b);
21、printf(“%d,%dn”, printf(“%d,%dn”,* *p1,p1,* *p2); p2); return 0; return 0; abp1p2p59&a&b&b&a留意留意: :a a和和b b的值并未交換,它們?nèi)员3衷档闹挡⑽唇粨Q,它們?nèi)员3衷档玴1p1和和p2p2的值改變了。的值改變了。p1p1的值原為的值原為&a&a,后來變成,后來變成&b&b,p2p2原原值為值為&b&b,后來變成,后來變成&a&a這樣在輸出這樣在輸出* *p1p1和和* *p2p2時(shí),實(shí)際上是輸出
22、變量時(shí),實(shí)際上是輸出變量b b和和a a的值,所以的值,所以先輸出先輸出9 9,然后輸出,然后輸出5 5指針變量作為函數(shù)參數(shù)指針變量作為函數(shù)參數(shù)例例: : 題目要求同上例,即對(duì)輸入的兩個(gè)整數(shù)按大小順序輸出。題目要求同上例,即對(duì)輸入的兩個(gè)整數(shù)按大小順序輸出?,F(xiàn)用函數(shù)處理,而且用指針類型的數(shù)據(jù)作函數(shù)參數(shù)?,F(xiàn)用函數(shù)處理,而且用指針類型的數(shù)據(jù)作函數(shù)參數(shù)。解題思路:定義一個(gè)函數(shù)解題思路:定義一個(gè)函數(shù)swapswap,將指向兩個(gè)整型變量的指針變量作為實(shí)參傳,將指向兩個(gè)整型變量的指針變量作為實(shí)參傳遞給遞給swapswap函數(shù)的形參指針變量,在函數(shù)中通過指針實(shí)現(xiàn)交換兩個(gè)變量的值。函數(shù)的形參指針變量,在函數(shù)中通
23、過指針實(shí)現(xiàn)交換兩個(gè)變量的值。#include #include int main()int main()void swap(int void swap(int * *p1,int p1,int * *p2); p2); int a,b; int int a,b; int* *pointer_1,pointer_1,* *pointer_2; pointer_2; printf(please enter a and b:); printf(please enter a and b:); scanf(“%d,%d”,&a,&b); scanf(“%d,%d”,&a,&
24、;b); pointer_1=&a; pointer_1=&a; pointer_2=&b; pointer_2=&b; if (ab) swap(pointer_1,pointer_2); if (ab) swap(pointer_1,pointer_2); printf(“max=%d,min=%dn”,a,b); printf(“max=%d,min=%dn”,a,b); return 0; return 0; pointer_1a&a5pointer_2b&b9void swap(int void swap(int * *p1,int p
25、1,int * *p2) p2) int temp; int temp; temp= temp=* *p1; p1; * *p1=p1=* *p2;p2; * *p2=temp;p2=temp; abpointer_159&a&bpointer_2p1&ap2&b95n如果想通過函數(shù)調(diào)用得到個(gè)要改變的值:如果想通過函數(shù)調(diào)用得到個(gè)要改變的值:n 在主調(diào)函數(shù)中設(shè)個(gè)變量,用個(gè)指針變量指向它們?cè)谥髡{(diào)函數(shù)中設(shè)個(gè)變量,用個(gè)指針變量指向它們n 設(shè)計(jì)一個(gè)函數(shù),有設(shè)計(jì)一個(gè)函數(shù),有n n個(gè)指針形參。在這個(gè)函數(shù)中改變這個(gè)指針形參。在這個(gè)函數(shù)中改變這個(gè)形參的值個(gè)形參的值n 在主調(diào)函數(shù)中
26、調(diào)用這個(gè)函數(shù),在調(diào)用時(shí)將這在主調(diào)函數(shù)中調(diào)用這個(gè)函數(shù),在調(diào)用時(shí)將這n n個(gè)指針變個(gè)指針變量作實(shí)參,將它們的地址傳給該函數(shù)的形參量作實(shí)參,將它們的地址傳給該函數(shù)的形參n 在執(zhí)行該函數(shù)的過程中,通過形參指針變量,改變它們?cè)趫?zhí)行該函數(shù)的過程中,通過形參指針變量,改變它們所指向的個(gè)變量的值所指向的個(gè)變量的值n主調(diào)函數(shù)中就可以使用這些改變了值的變量主調(diào)函數(shù)中就可以使用這些改變了值的變量n留意:函數(shù)的調(diào)用可以而且只可以得到一個(gè)返回值即留意:函數(shù)的調(diào)用可以而且只可以得到一個(gè)返回值即函數(shù)值),而使用指針變量作參數(shù),可以得到多個(gè)變化了的函數(shù)值),而使用指針變量作參數(shù),可以得到多個(gè)變化了的值。如果不用指針變量是難以
27、做到這一點(diǎn)的。值。如果不用指針變量是難以做到這一點(diǎn)的。n要善于利用指針法。要善于利用指針法。n例:輸入例:輸入3 3個(gè)整數(shù)個(gè)整數(shù)a,b,ca,b,c,要求按由大到小的順序?qū)⑺鼈冚敵?。,要求按由大到小的順序?qū)⑺鼈冚敵觥S煤瘮?shù)實(shí)現(xiàn)。用函數(shù)實(shí)現(xiàn)。#include int main() void exchange(int *q1, int *q2, int *q3); 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
28、(“%d,%d,%dn,a,b,c); return 0;調(diào)用結(jié)束后不會(huì)調(diào)用結(jié)束后不會(huì)改變指針的指向改變指針的指向void exchange(int *q1, int *q2, int *q3) void swap(int *pt1, int *pt2); if(*q1*q2) swap(q1,q2); if(*q1*q3) swap(q1,q3); if(*q2*q3) swap(q2,q3); void swap(int *pt1, int *pt2) int temp; temp=*pt1; *pt1=*pt2; *pt2=temp; 交換指針指交換指針指向的變量值向的變量值二、數(shù)組指針
29、和指向數(shù)組的指針變量二、數(shù)組指針和指向數(shù)組的指針變量指向數(shù)組元素的指針指向數(shù)組元素的指針 通過指針引用數(shù)組元素通過指針引用數(shù)組元素 數(shù)組名做函數(shù)參數(shù)數(shù)組名做函數(shù)參數(shù)指向多維數(shù)組的指針和指針變量指向多維數(shù)組的指針和指針變量指向數(shù)組元素的指針指向數(shù)組元素的指針一個(gè)數(shù)組是由連續(xù)的一塊內(nèi)存單元組成的。數(shù)組名就是這塊連續(xù)一個(gè)數(shù)組是由連續(xù)的一塊內(nèi)存單元組成的。數(shù)組名就是這塊連續(xù)內(nèi)存單元的首地址。一個(gè)數(shù)組也是由各個(gè)數(shù)組元素內(nèi)存單元的首地址。一個(gè)數(shù)組也是由各個(gè)數(shù)組元素( (下標(biāo)變量下標(biāo)變量) )組組成的。每個(gè)數(shù)組元素按其類型不同占有幾個(gè)連續(xù)的內(nèi)存單元。一成的。每個(gè)數(shù)組元素按其類型不同占有幾個(gè)連續(xù)的內(nèi)存單元。一
30、個(gè)數(shù)組元素的首地址也是指它所占有的幾個(gè)內(nèi)存單元的首地址。個(gè)數(shù)組元素的首地址也是指它所占有的幾個(gè)內(nèi)存單元的首地址。定義一個(gè)指向數(shù)組元素的指針變量的方法,與以前介紹的指針定義一個(gè)指向數(shù)組元素的指針變量的方法,與以前介紹的指針變量相同。變量相同。數(shù)組指針變量說明的一般形式為:數(shù)組指針變量說明的一般形式為:類型說明符類型說明符 * *指針變量名;指針變量名;例如:例如: int a10 int a10; / /* *定義定義a a為包含為包含1010個(gè)整型數(shù)據(jù)的數(shù)組個(gè)整型數(shù)據(jù)的數(shù)組* */ /int int * *p p; / /* *定義定義p p為指向整型變量的指針為指向整型變量的指針* */ /
31、應(yīng)當(dāng)注意,因?yàn)閿?shù)組為應(yīng)當(dāng)注意,因?yàn)閿?shù)組為intint型,所以指針變量也應(yīng)為指向型,所以指針變量也應(yīng)為指向intint型型的指針變量。下面是對(duì)指針變量賦值:的指針變量。下面是對(duì)指針變量賦值:p=&a0;p=&a0;把把a(bǔ)0a0元素的地址賦給指針變量元素的地址賦給指針變量p p。也就是說,。也就是說,p p指向指向a a數(shù)組的數(shù)組的第第0 0號(hào)元素。號(hào)元素。C C語言規(guī)定,數(shù)組名代表數(shù)組的首地址,也就是第語言規(guī)定,數(shù)組名代表數(shù)組的首地址,也就是第0 0號(hào)元素的地址。號(hào)元素的地址。因此,下面兩個(gè)語句等價(jià):因此,下面兩個(gè)語句等價(jià):p=&a0;p=&a0;p=a;p=a;
32、在定義指針變量時(shí)可以賦給初值:在定義指針變量時(shí)可以賦給初值:int int * *p=&a0;p=&a0;它等效于:它等效于:int int * *p; p; p=&a0;p=&a0;當(dāng)然定義時(shí)也可以寫成:當(dāng)然定義時(shí)也可以寫成: int int * *p=a;p=a;從圖中我們可以看出有以下關(guān)系:從圖中我們可以看出有以下關(guān)系: p,a,&a0 p,a,&a0均指向同一單元,它們是數(shù)組均指向同一單元,它們是數(shù)組a a的首地址,也是的首地址,也是0 0 號(hào)元號(hào)元素素a0a0的首地址。應(yīng)該說明的是的首地址。應(yīng)該說明的是p p是變量,而是變量,而a,&a
33、mp;a0a,&a0都是常量。都是常量。通過指針引用數(shù)組元素通過指針引用數(shù)組元素C C語言規(guī)定:如果指針變量語言規(guī)定:如果指針變量p p已指向數(shù)組中的一個(gè)元素,則已指向數(shù)組中的一個(gè)元素,則p+1p+1指向同一數(shù)組中的下一個(gè)元素。指向同一數(shù)組中的下一個(gè)元素。引入指針變量后,就可以用兩種方法來訪問數(shù)組元素了。引入指針變量后,就可以用兩種方法來訪問數(shù)組元素了。如果如果p p的初值為的初值為&a0,&a0,那么:那么:1.p+i1.p+i和和a+ia+i就是就是aiai的地址,或者說它們指向的地址,或者說它們指向a a數(shù)組的第數(shù)組的第i i個(gè)元素。個(gè)元素。2. 2.* *(p+
34、i)(p+i)或或* *(a+i)(a+i)就是就是p+ip+i或或a+ia+i所指向的數(shù)組所指向的數(shù)組元素,即元素,即aiai。例如,。例如,* *(p+5)(p+5)或或* *(a+5)(a+5)就是就是a5a5。3. 3.指向數(shù)組的指針變量也可以帶下標(biāo),如指向數(shù)組的指針變量也可以帶下標(biāo),如pipi與與* *(p+i)(p+i)等價(jià)。等價(jià)。根據(jù)以上敘述,引用一個(gè)數(shù)組元素可以用:根據(jù)以上敘述,引用一個(gè)數(shù)組元素可以用:下標(biāo)法,即用下標(biāo)法,即用aiai形式訪問數(shù)組元素。在前面介紹數(shù)組時(shí)都是形式訪問數(shù)組元素。在前面介紹數(shù)組時(shí)都是采用這種方法。采用這種方法。指針法,即采用指針法,即采用* *(a+i
35、)(a+i)或或* *(p+i)(p+i)方式,用間接訪問的方法來訪方式,用間接訪問的方法來訪問數(shù)組元素,其中問數(shù)組元素,其中a a是數(shù)組名,是數(shù)組名,p p是指向數(shù)組的指針變量,其是指向數(shù)組的指針變量,其處值處值p=ap=a。1. 1.輸出數(shù)組中的全部元素。(下標(biāo)法)輸出數(shù)組中的全部元素。(下標(biāo)法)main()main() int a10,i; int a10,i; for(i=0;i10;i+) for(i=0;i10;i+) ai=i; ai=i; for(i=0;i5;i+) for(i=0;i5;i+) printf(a%d=%dn,i,ai); printf(a%d=%dn,i,a
36、i); 2. 2.輸出數(shù)組中的全部元素。(用指針變量指向元素)輸出數(shù)組中的全部元素。(用指針變量指向元素)main()main() int a10,i, int a10,i,* *p; p; p=a; p=a; for(i=0;i10;i+) for(i=0;i10;i+) * *(p+i)=i;(p+i)=i; for(i=0;i10;i+) for(i=0;i10;i+) printf(a%d=%dn,i, printf(a%d=%dn,i,* *(p+i);(p+i); 3. 3.輸出數(shù)組中的全部元素。(通過數(shù)組名計(jì)算元素的地址,輸出數(shù)組中的全部元素。(通過數(shù)組名計(jì)算元素的地址,找出元素
37、的值)找出元素的值)main()main() int a10,i; int a10,i; for(i=0;i10;i+) for(i=0;i10;i+) * *(a+i)=i;(a+i)=i; for(i=0;i10;i+) for(i=0;i10;i+) printf(a%d=%dn,i, printf(a%d=%dn,i,* *(a+i);(a+i); 如果有一個(gè)實(shí)參數(shù)組,想在函數(shù)中改變此數(shù)組的元素的值,如果有一個(gè)實(shí)參數(shù)組,想在函數(shù)中改變此數(shù)組的元素的值,實(shí)參與形參的對(duì)應(yīng)關(guān)系有以下種:實(shí)參與形參的對(duì)應(yīng)關(guān)系有以下種:形參和實(shí)參都是數(shù)組名。形參和實(shí)參都是數(shù)組名。main()main()int
38、a10;int a10; f(a,10) f(a,10) f(int x ,int n)f(int x ,int n) 和指的是同一組數(shù)組。和指的是同一組數(shù)組。數(shù)組名做函數(shù)參數(shù)數(shù)組名做函數(shù)參數(shù)l實(shí)參數(shù)組,形參用指針變量。實(shí)參數(shù)組,形參用指針變量。main()main()lint a10;int a10;l l f(a,10) f(a,10)l lf(int f(int * *x,int n)x,int n)l l l l l實(shí)參、形參都用指針變量。實(shí)參、形參都用指針變量。l實(shí)參為指針變量,形參為數(shù)組名。實(shí)參為指針變量,形參為數(shù)組名。指向多維數(shù)組的指針和指針變量指向多維數(shù)組的指針和指針變量以二維
39、數(shù)組為例:以二維數(shù)組為例:1. 1.二維數(shù)組的地址二維數(shù)組的地址設(shè)有整型二維數(shù)組設(shè)有整型二維數(shù)組a34a34如下:如下: 0 1 2 3 0 1 2 35 6 7 5 6 7 9 10 119 10 11它的定義為:它的定義為:int a34=0,1,2,3,4,5,6,7,8,9,10,11int a34=0,1,2,3,4,5,6,7,8,9,10,11設(shè)數(shù)組設(shè)數(shù)組a a的首地址為的首地址為10001000,各個(gè)下標(biāo)變量的首地址及其值如下:,各個(gè)下標(biāo)變量的首地址及其值如下: C C語言允許把一個(gè)二維數(shù)組分解為多個(gè)一維數(shù)組來處理,因語言允許把一個(gè)二維數(shù)組分解為多個(gè)一維數(shù)組來處理,因此數(shù)組此數(shù)
40、組a a可以分解為三個(gè)一維數(shù)組,即可以分解為三個(gè)一維數(shù)組,即a0,a1,a2.a0,a1,a2.每一個(gè)一維每一個(gè)一維數(shù)組又含有四個(gè)元素。數(shù)組又含有四個(gè)元素。那么那么a0a0數(shù)組,含有數(shù)組,含有a00,a01,a02,a03a00,a01,a02,a03四個(gè)元素。四個(gè)元素。 從二維數(shù)組的角度來看,從二維數(shù)組的角度來看,a a是二維數(shù)組名,是二維數(shù)組名,a a代表整個(gè)二維數(shù)組的代表整個(gè)二維數(shù)組的首地址,也是二維數(shù)組首地址,也是二維數(shù)組0 0行的首地址,等于行的首地址,等于10001000。a+1a+1代表第一行的代表第一行的首地址,等于首地址,等于1008.1008. a0 a0是第一個(gè)一維數(shù)組的
41、數(shù)組名和首地址,因此也為是第一個(gè)一維數(shù)組的數(shù)組名和首地址,因此也為10001000。* *(a+0)(a+0)或或* *a a是與是與a0a0等效的。它表示一維數(shù)組等效的。它表示一維數(shù)組a00 a00 號(hào)元素的首地址,號(hào)元素的首地址,也為也為10001000。&a00&a00是二維數(shù)組是二維數(shù)組a a的的0 0行行0 0列元素首地址,同樣是列元素首地址,同樣是10001000。因此,因此,a a,a0a0,* *(a+0)(a+0),* *a a,&a00&a00是相等的。是相等的。 同理,同理,a+1a+1是二維數(shù)組是二維數(shù)組1 1行的首地址,等于行的首地址,
42、等于10081008。a1a1是第二個(gè)一維是第二個(gè)一維數(shù)組的數(shù)組名和首地址,因此也為數(shù)組的數(shù)組名和首地址,因此也為10081008。&a10&a10是二維數(shù)組是二維數(shù)組a a的的1 1行行0 0列元素地址,也是列元素地址,也是10081008。因此因此a+1,a1,a+1,a1,* *(a+1),&a10(a+1),&a10是等同的。是等同的。由此可得出:由此可得出:a+ia+i,aiai,* *(a+i)(a+i),&ai0&ai0是等同的。是等同的。 另外,另外,a0a0也可以看成是也可以看成是a0+0a0+0,是一維數(shù)組,是一維數(shù)組a0a0
43、的的0 0號(hào)元素號(hào)元素的首地址,而的首地址,而a0+1a0+1則是則是a0a0的的1 1號(hào)元素首地址,由此可得出號(hào)元素首地址,由此可得出ai+jai+j則是一維數(shù)組則是一維數(shù)組aiai的的j j號(hào)元素首地址,它等于號(hào)元素首地址,它等于&aij&aij。由由ai=ai=* *(a+i)(a+i)得得ai+j=ai+j=* *(a+i)+j(a+i)+j。由于。由于* *(a+i)+j(a+i)+j是二維數(shù)組是二維數(shù)組a a的的i i行行j j列元素的首地址,所以,該元素的值等于列元素的首地址,所以,該元素的值等于* *( (* *(a+i)+j)(a+i)+j)。2. 2.指向多
44、維數(shù)組的指針變量指向多維數(shù)組的指針變量 把二維數(shù)組把二維數(shù)組a a分解為一維數(shù)組分解為一維數(shù)組a0,a1,a2a0,a1,a2之后,設(shè)之后,設(shè)p p為指向二維數(shù)組為指向二維數(shù)組的指針變量??啥x為:的指針變量??啥x為: int ( int (* *p)4p)4它表示它表示p p是一個(gè)指針變量,它指向包含是一個(gè)指針變量,它指向包含4 4個(gè)元素的一維數(shù)組。若指向個(gè)元素的一維數(shù)組。若指向第一個(gè)一維數(shù)組第一個(gè)一維數(shù)組a0a0,其值等于,其值等于a,a0a,a0,或,或&a00&a00等。而等。而p+ip+i則指向則指向一維數(shù)組一維數(shù)組aiai。從前面的分析可得出。從前面的分析可得出*
45、 *(p+i)+j(p+i)+j是二維數(shù)組是二維數(shù)組i i行行j j 列的元素列的元素的地址,而的地址,而* *( (* *(p+i)+j)(p+i)+j)則是則是i i行行j j列元素的值。列元素的值。二維數(shù)組指針變量說明的一般形式為:二維數(shù)組指針變量說明的一般形式為:類型說明符類型說明符 ( (* *指針變量名指針變量名) )長(zhǎng)度長(zhǎng)度 其中其中“類型說明符為所指數(shù)組的數(shù)據(jù)類型。類型說明符為所指數(shù)組的數(shù)據(jù)類型?!? *”表示其后的變量表示其后的變量是指針類型。是指針類型?!伴L(zhǎng)度表示二維數(shù)組分解為多個(gè)一維數(shù)組時(shí),長(zhǎng)度表示二維數(shù)組分解為多個(gè)一維數(shù)組時(shí),一維數(shù)組的長(zhǎng)度,也就是二維數(shù)組的列數(shù)。一維數(shù)
46、組的長(zhǎng)度,也就是二維數(shù)組的列數(shù)。應(yīng)注意應(yīng)注意“(“(* *指針變量名指針變量名)”)”兩邊的括號(hào)不可少,如缺少括號(hào)則表示兩邊的括號(hào)不可少,如缺少括號(hào)則表示是指針數(shù)組是指針數(shù)組( (本章后面介紹本章后面介紹) ),意義就完全不同了。,意義就完全不同了。三、字符串的指針和指向字符串的指針變量三、字符串的指針和指向字符串的指針變量字符串的表示形式字符串的表示形式使用字符串指針變量和字符數(shù)組的區(qū)別使用字符串指針變量和字符數(shù)組的區(qū)別在在C C語言中,可以用兩種方法訪問一個(gè)字符串。語言中,可以用兩種方法訪問一個(gè)字符串。(1 1用字符數(shù)組存放一個(gè)字符串,然后輸出該字符串。用字符數(shù)組存放一個(gè)字符串,然后輸出該
47、字符串。 例:例:main( )main( ) char string=“I love China!”; char string=“I love China!”; printf(%sn,string); printf(%sn,string); (2 2用字符串指針指向一個(gè)字符串。用字符串指針指向一個(gè)字符串。 例:例: main() main() char char * *string=”I love China!”;string=”I love China!”; printf(%sn,string); printf(%sn,string); 字符串的表示形式字符串的表示形式字符串指針變量的定義
48、說明與指向字符變量的指針變量說明是相同的。字符串指針變量的定義說明與指向字符變量的指針變量說明是相同的。只能按對(duì)指針變量的賦值不同來區(qū)別。對(duì)指向字符變量的指針變量只能按對(duì)指針變量的賦值不同來區(qū)別。對(duì)指向字符變量的指針變量應(yīng)賦予該字符變量的地址。應(yīng)賦予該字符變量的地址。如:如: char c, char c,* *p=&c;p=&c;表示表示p p是一個(gè)指向字符變量是一個(gè)指向字符變量c c的指針變量。的指針變量。而:而: char char * *s=C Language;s=C Language;則表示則表示s s是一個(gè)指向字符串的指針變量。把字符串的首地址賦予是一個(gè)指向字符串
49、的指針變量。把字符串的首地址賦予s s。例:輸出字符串中例:輸出字符串中n n個(gè)字符后的所有字符。個(gè)字符后的所有字符。main( )main( ) char char * *ps=this is a book;ps=this is a book; int n=10; int n=10; ps=ps+n; ps=ps+n; printf(%sn,ps); printf(%sn,ps); 在程序中對(duì)在程序中對(duì)psps初始化時(shí),即把字符串首地址賦予初始化時(shí),即把字符串首地址賦予psps,當(dāng),當(dāng)ps= ps+10ps= ps+10之后,之后,psps指向字符指向字符“b”“b”,因此輸出為,因此輸出為
50、bookbook。#include#include#include#includeint main()int main()void swap(char void swap(char * *p1,cha p1,cha * *p2);p2);char str120,str231,str320;char str120,str231,str320;printf(“input three lines:n”);printf(“input three lines:n”);gets(str1);gets(str2);gets(str3);gets(str1);gets(str2);gets(str3);if(
51、strcmp(str1,str2)0) swap(str1,str2);if(strcmp(str1,str2)0) swap(str1,str2);if(strcmp(str1,str3)0) swap(str1,str3);if(strcmp(str1,str3)0) swap(str1,str3);if(strcmp(str2,str3)0) swap(str2,str3);if(strcmp(str2,str3)0) swap(str2,str3);printf(“the order is:n”);printf(“the order is:n”);printf(“%sn%sn%sn”,
52、str1,str2,str3);printf(“%sn%sn%sn”,str1,str2,str3);return 0;return 0; 例:輸入例:輸入3 3個(gè)字符串,按由小到大的順序輸出。個(gè)字符串,按由小到大的順序輸出。void swap(char void swap(char * *p1,char p1,char * *p2)p2)char p20;char p20;strcpy(p,p1); strcpy(p1,p2); strcpy(p2,p); strcpy(p,p1); strcpy(p1,p2); strcpy(p2,p); 使用字符串指針變量與字符數(shù)組的區(qū)別使用字符串指針變
53、量與字符數(shù)組的區(qū)別 用字符數(shù)組和字符指針變量都可實(shí)現(xiàn)字符串的存儲(chǔ)和運(yùn)算。用字符數(shù)組和字符指針變量都可實(shí)現(xiàn)字符串的存儲(chǔ)和運(yùn)算。但是兩者是有區(qū)別的。在使用時(shí)應(yīng)注意以下幾個(gè)問題:但是兩者是有區(qū)別的。在使用時(shí)應(yīng)注意以下幾個(gè)問題: 1. 1.字符串指針變量本身是一個(gè)變量,用于存放字符串的首字符串指針變量本身是一個(gè)變量,用于存放字符串的首地址。而字符串本身是存放在以該首地址為首的一塊連續(xù)的地址。而字符串本身是存放在以該首地址為首的一塊連續(xù)的內(nèi)存空間中并以內(nèi)存空間中并以00作為串的結(jié)束。字符數(shù)組是由于若干作為串的結(jié)束。字符數(shù)組是由于若干個(gè)數(shù)組元素組成的,它可用來存放整個(gè)字符串。個(gè)數(shù)組元素組成的,它可用來存放
54、整個(gè)字符串。 2. 2.對(duì)字符串指針方式對(duì)字符串指針方式char char * *ps=C Language;ps=C Language;可以寫為:可以寫為: char char * *ps; ps=C Language;ps; ps=C Language;而對(duì)數(shù)組方式:而對(duì)數(shù)組方式: static char st=C Language; static char st=C Language;不能寫為:不能寫為: char st20; st=C Language; char st20; st=C Language;而只能對(duì)字符數(shù)組的各元素逐個(gè)賦值。而只能對(duì)字符數(shù)組的各元素逐個(gè)賦值。四、指針數(shù)組和
55、指向指針的指針?biāo)摹⒅羔様?shù)組和指向指針的指針指針數(shù)組的概念指針數(shù)組的概念 指向指針的指針指向指針的指針字符串的表示形式字符串的表示形式指針數(shù)組的概念指針數(shù)組的概念一個(gè)數(shù)組的元素值為指針則是指針數(shù)組。一個(gè)數(shù)組的元素值為指針則是指針數(shù)組。 指針數(shù)組是一組有序的指針數(shù)組是一組有序的指針的集合。指針的集合。指針數(shù)組的所有元素都必須是具有相同存儲(chǔ)類型和指向相同數(shù)據(jù)指針數(shù)組的所有元素都必須是具有相同存儲(chǔ)類型和指向相同數(shù)據(jù)類型的指針變量。類型的指針變量。 指針數(shù)組說明的一般形式為:指針數(shù)組說明的一般形式為: 類型說明符類型說明符 * *數(shù)組名數(shù)組名 數(shù)組長(zhǎng)度數(shù)組長(zhǎng)度 其中類型說明符為指針值所指向的變量的類型。
56、其中類型說明符為指針值所指向的變量的類型。例如:例如:int int * *pa3pa3表示表示papa是一個(gè)指針數(shù)組,它有三個(gè)數(shù)組元素,每個(gè)元素值都是是一個(gè)指針數(shù)組,它有三個(gè)數(shù)組元素,每個(gè)元素值都是一個(gè)指針,指向整型變量。一個(gè)指針,指向整型變量。應(yīng)該注意指針數(shù)組和二維數(shù)組指針變量的區(qū)別。這兩者雖然都應(yīng)該注意指針數(shù)組和二維數(shù)組指針變量的區(qū)別。這兩者雖然都可用來表示二維數(shù)組,但是其表示方法和意義是不同的??捎脕肀硎径S數(shù)組,但是其表示方法和意義是不同的。二維數(shù)組指針變量是單個(gè)的變量,其一般形式中二維數(shù)組指針變量是單個(gè)的變量,其一般形式中( (* *指針變量指針變量名名) )兩邊的括號(hào)不可少。而指
57、針數(shù)組類型表示的是多個(gè)指針兩邊的括號(hào)不可少。而指針數(shù)組類型表示的是多個(gè)指針( (一一組有序指針組有序指針) )在一般形式中在一般形式中 * *指針數(shù)組名指針數(shù)組名 兩邊不能有括號(hào)。兩邊不能有括號(hào)。例如:例如: int ( int (* *p)3;p)3;表示一個(gè)指向二維數(shù)組的指針變量。該二維數(shù)組的列數(shù)為表示一個(gè)指向二維數(shù)組的指針變量。該二維數(shù)組的列數(shù)為3 3或或分解為一維數(shù)組的長(zhǎng)度為分解為一維數(shù)組的長(zhǎng)度為3 3。 int int * *p3p3表示表示p p是一個(gè)指針數(shù)組,有三個(gè)下標(biāo)變量是一個(gè)指針數(shù)組,有三個(gè)下標(biāo)變量p0p0,p1p1,p2p2均為指均為指針變量。針變量。指向指針的指針指向指針
58、的指針 從下圖可以看到,從下圖可以看到,namename是一個(gè)指針數(shù)組,它的每一個(gè)元素是是一個(gè)指針數(shù)組,它的每一個(gè)元素是一個(gè)指針型數(shù)據(jù),其值為地址。一個(gè)指針型數(shù)據(jù),其值為地址。namename是一個(gè)數(shù)組,它的每一個(gè)元素是一個(gè)數(shù)組,它的每一個(gè)元素都有相應(yīng)的地址。數(shù)組名都有相應(yīng)的地址。數(shù)組名namename代表該指針數(shù)組的首地址。代表該指針數(shù)組的首地址。name+1name+1是是maneimanei的地址。的地址。name+1name+1就是指向指針型數(shù)據(jù)的指針就是指向指針型數(shù)據(jù)的指針(地址)。還可以設(shè)置一個(gè)指針變量(地址)。還可以設(shè)置一個(gè)指針變量p p,使它指向指針數(shù)組元素。,使它指向指針數(shù)組
59、元素。P P就是指向指針型數(shù)據(jù)的指針變量。就是指向指針型數(shù)據(jù)的指針變量。 如果一個(gè)指針變量存放的又是另一個(gè)指針變量的地址,則稱這個(gè)指針變量為指向指針的指針變量。char char * * *p; p;p p前面有兩個(gè)前面有兩個(gè)* *號(hào)號(hào), ,相當(dāng)于相當(dāng)于* *( (* *p)p)。顯然。顯然* *p p是指針變量的定義形式,是指針變量的定義形式,如果沒有最前面的如果沒有最前面的* *,那就是定義了一個(gè)指向字符數(shù)據(jù)的指針變,那就是定義了一個(gè)指向字符數(shù)據(jù)的指針變量?,F(xiàn)在它前面又有一個(gè)量?,F(xiàn)在它前面又有一個(gè)* *號(hào),表示指針變量號(hào),表示指針變量p p是指向一個(gè)字符是指向一個(gè)字符指針型變量的。指針型變
60、量的。* *p p就是就是p p所指向的另一個(gè)指針變量。所指向的另一個(gè)指針變量。如果有:如果有:p=name+2;p=name+2;printf(“%on”,printf(“%on”,* *p);p);printf(“%sn”,printf(“%sn”,* *p);p);則第一個(gè)則第一個(gè)printfprintf函數(shù)語句輸出函數(shù)語句輸出name2name2的值它是一個(gè)地址),的值它是一個(gè)地址),第二個(gè)第二個(gè)printfprintf函數(shù)語句以字符串形式(函數(shù)語句以字符串形式(%s%s輸出字符串輸出字符串“Great “Great Wall”Wall”。指針變量可以進(jìn)行某些運(yùn)算,但其運(yùn)算的種類是有限
61、的。它只能指針變量可以進(jìn)行某些運(yùn)算,但其運(yùn)算的種類是有限的。它只能進(jìn)行賦值運(yùn)算和部分算術(shù)運(yùn)算及關(guān)系運(yùn)算。進(jìn)行賦值運(yùn)算和部分算術(shù)運(yùn)算及關(guān)系運(yùn)算。1. 1.指針運(yùn)算符指針運(yùn)算符取地址運(yùn)算符取地址運(yùn)算符&:&:取地址運(yùn)算符取地址運(yùn)算符& &是單目運(yùn)算符,其結(jié)合性為自右至是單目運(yùn)算符,其結(jié)合性為自右至左,其功能是取變量的地址。在左,其功能是取變量的地址。在scanfscanf函數(shù)及前面介紹指針變量賦函數(shù)及前面介紹指針變量賦值中,我們已經(jīng)了解并使用了值中,我們已經(jīng)了解并使用了& &運(yùn)算符。運(yùn)算符。取內(nèi)容運(yùn)算符取內(nèi)容運(yùn)算符* *: :取內(nèi)容運(yùn)算符取內(nèi)容運(yùn)算符* *是單目運(yùn)算符,其結(jié)合性為自右至是單目運(yùn)算符,其結(jié)合性為自右至左,用來表示指針變量所指的變量。在左,用來表示指針變量所指的變量。在* *運(yùn)算符之后跟的變量必須運(yùn)算符之后跟的變量必須是指針變量。是指針變量。需要注意的是指針運(yùn)算符需要注意的是指針運(yùn)算符* *和指針變量說明中的指針說明符和指針
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版舊車買賣合同包含車輛過戶手續(xù)辦理3篇
- 2025版智能小區(qū)監(jiān)控平臺(tái)建設(shè)與運(yùn)營(yíng)維護(hù)合同3篇
- 2025年度船舶港口清潔與消毒服務(wù)合同3篇
- 2025年度居民用水行業(yè)發(fā)展規(guī)劃合同示范3篇
- 2024全新電力系統(tǒng)保護(hù)用機(jī)電產(chǎn)品買賣協(xié)議3篇
- 2024年版權(quán)許可使用合同中的權(quán)利義務(wù)規(guī)定
- 2025版鋼筋混凝土排水管系統(tǒng)集成與智能化升級(jí)合同3篇
- 2024年牧場(chǎng)草地修復(fù)與購買合同
- 2025版駕校經(jīng)營(yíng)權(quán)創(chuàng)新發(fā)展承包合同
- 2025版城市公交客車租賃協(xié)議書3篇
- 初二年級(jí)勞動(dòng)課教案6篇
- 箱變遷移工程施工方案
- 北師大版九年級(jí)數(shù)學(xué)下冊(cè)《圓的對(duì)稱性》評(píng)課稿
- 住宅室內(nèi)裝飾裝修管理辦法課件
- 呼吸系統(tǒng)疾病診療規(guī)范
- 《遙感原理與應(yīng)用》期末考試試卷附答案
- 2023年全國(guó)乙卷筆試部分講解課件 【高效課堂+精研精講】 高考英語復(fù)習(xí)
- GB/T 9452-2023熱處理爐有效加熱區(qū)測(cè)定方法
- 肺炎支原體肺炎診治專家共識(shí)
- 酒店業(yè)輕資產(chǎn)運(yùn)營(yíng)模式案例研究
- 建筑師《建筑工程經(jīng)濟(jì)》習(xí)題(E)
評(píng)論
0/150
提交評(píng)論