第十七章 指針_第1頁
第十七章 指針_第2頁
第十七章 指針_第3頁
第十七章 指針_第4頁
第十七章 指針_第5頁
已閱讀5頁,還剩64頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第十七章:指針. .指針與指針變量指針與指針變量ab20102012p2010q2012因此,在因此,在C語言中,將地語言中,將地址形象化地稱為址形象化地稱為指針指針基類型,即該指針變基類型,即該指針變量所指向的變量的類量所指向的變量的類型型如何使一個指針變量指向另如何使一個指針變量指向另外一個變量呢?外一個變量呢?P=&a;q=&b;ab20102012p2010q2012交換前交換前1020a1a2P1 &a1P2 &a21020a1*p2a2*p1交換后交換后P1 &a2P2 &a1P=p1;p1=p2;p2=p下面表示下面表示p1和和p1

2、交換所指內(nèi)容交換所指內(nèi)容2010a1*p1a2*p2交換后交換后P1 &a1P2 &a21020a1*p1a2*p2交換前交換前P1 &a1P2 &a2a=*p1;*p1=*p2;*p2=pswap(int x,int y) int temp; temp=x; x=y; y=temp;main() int a,b; scanf(%d,%d,&a,&b); if(ab) swap(a,b); printf(n%d,%dn,a,b);例例17_4.c17_4.c 將數(shù)從大到小輸出將數(shù)從大到小輸出.20002008200A2002200420065變量

3、a 變量b(main)9 變量temp 變量y 變量x(swap)559 59COPY17.217.2指針變量作為函數(shù)參數(shù)指針變量作為函數(shù)參數(shù)地址傳遞地址傳遞swap(int x,int y) int temp; temp=x; x=y; y=temp;main() int a,b; scanf(%d,%d,&a,&b); if(ab) swap(a,b); printf(n%d,%dn,a,b);例 17_4.c 將數(shù)從大到小輸出值傳遞.20002008200A2002200420065變量a 變量b(main)9運行結(jié)果:5, 9swap(int *p1, int *p2)

4、 int p; p=*p1; *p1=*p2; *p2=p;main() int a,b; int *pointer_1,*pointer_2; scanf(%d,%d,&a,&b); pointer_1=&a; pointer_2=&b; if(ab)swap(pointer_1,pointer_2); printf(n%d,%dn,a,b);.20002008200A200220042006200C200E2010.59整型變量a 整型變量b(main)指針pointer_1指針pointer_220002002(swap)指針p1指針p2整型p592000

5、2002COPY5例例17_5.c 將數(shù)從大到小輸出將數(shù)從大到小輸出swap(int *p1, int *p2) int p; p=*p1; *p1=*p2; *p2=p;main() int a,b; int *pointer_1,*pointer_2; scanf(%d,%d,&a,&b); pointer_1=&a; pointer_2=&b; if(ab)swap(pointer_1,pointer_2); printf(n%d,%dn,a,b);.20002008200A200220042006200C200E2010.59整型變量a 整型變量b(ma

6、in)指針pointer_1指針pointer_22000200259運行結(jié)果:9,5地址傳遞例例 17_5.c將數(shù)從大到小輸出(將數(shù)從大到小輸出(1 1)swap(int *p1, int *p2) int *p; *p=*p1; *p1=*p2; *p2=*p;main() int a,b; int *pointer_1,*pointer_2; scanf(%d,%d,&a,&b); pointer_1=&a; pointer_2=&b; if(ab) swap(pointer_1,pointer_2); printf(n%d,%dn,a,b);運行結(jié)果:9

7、,9編譯警告!結(jié)果不對!int x;int *p=&x;x;.20002008200A200220042006200C200E2010.59整型變量a 整型變量b(main)指針pointer_1指針pointer_2200020029920002002COPY(swap)指針p1指針p2指針p*假設(shè)2000指針變量在使用前必須賦值!例例17_5.c 將數(shù)從大到小輸出將數(shù)從大到小輸出(2)/*ch9_32.c*/swap(int x,int y) int t; t=x; x=y; y=t;main() int a,b; int *pointer_1,*pointer_2; scanf(

8、%d,%d,&a,&b); pointer_1=&a; pointer_2=&b; if(ab) swap(*pointer_1,*pointer_2); printf(n%d,%dn,a,b);運行結(jié)果:5,9值傳遞.20002008200A200220042006200C200E2010.59整型a 整型b(main)pointer_1pointer_2200020029COPY(swap)整型x整型b整型t555 9例例 17_5.c將數(shù)從大到小輸出(將數(shù)從大到小輸出(3 3)運行結(jié)果:5,9swap(int *p1, int *p2) int *p; p

9、=p1; p1=p2; p2=p;main() int a,b; int *pointer_1,*pointer_2; scanf(%d,%d,&a,&b); pointer_1=&a; pointer_2=&b; if(ab) swap(pointer_1,pointer_2); printf(%d,%d,*pointer_1,*pointer_2);.20002008200A200220042006200C200E2010.59整型a 整型b(main)pointer_1pointer_22000200220002002COPY(swap)指針p1指針p2指

10、針p*2000地址傳遞20002002例例 17_5.c將數(shù)從大到小輸出(將數(shù)從大到小輸出(4 4)17.317.3指針與數(shù)組指針與數(shù)組A0A1A2A3A4P=ap=a+1P=a+2P=a+3P=a+4例例17_6.cmain( ) int a 5 =1, 3, 5, 7, 9, *p; for(i=0;i5;i+) printf(“%d”,*(a+i);Printf(“n”);/*地址法地址法*/ for (p=a; pa+5; p+) printf(“%d” , *p);/*指針法指針法*/如何用一個指針變量將數(shù)組中的元素取出并顯示出來?如何用一個指針變量將數(shù)組中的元素取出并顯示出來?A0

11、0A01A02A10A11A12A20A21A22P=&A00P+1P+2 :P+i :P+8二、二維數(shù)組的指針二、二維數(shù)組的指針復(fù)習(xí)二維數(shù)組在內(nèi)存中的表示法?復(fù)習(xí)二維數(shù)組在內(nèi)存中的表示法?每一行的元素每一行的元素個數(shù)個數(shù)定義格式:定義格式:存儲類型存儲類型 數(shù)據(jù)類型數(shù)據(jù)類型 (*指針變量指針變量 名)名)元素個數(shù)元素個數(shù)例如:例如:int a34; int (*p)4; p=a0;A0 1 2 3A1 4 5 6A2 7 8 9PP+1P+2所以,我們可以定義一種指向行向量的指針,讓它指向二所以,我們可以定義一種指向行向量的指針,讓它指向二維數(shù)組的第一行,該指針加維數(shù)組的第一行,該指針加1,就指向二維數(shù)組的下一行,就指向二維數(shù)組的下一行,這樣的指針就叫做這樣的指針就叫做行指針。行指針。P實際上是一個二級指針,必須對它施加兩次實際上是一個二級指針,必須對它施加兩次*運算,才能得運算,才能得到相應(yīng)的數(shù)組元素值。到相應(yīng)的數(shù)組元素值。17.4字符串的指針字符串的指針main()static char string=“I love china!”;Printf(“%sn”,string);main()char *string=“I love china!”;Printf(“%sn”,string

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論