C程序設(shè)計:第十章 指針_第1頁
C程序設(shè)計:第十章 指針_第2頁
C程序設(shè)計:第十章 指針_第3頁
C程序設(shè)計:第十章 指針_第4頁
C程序設(shè)計:第十章 指針_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第十章 指針10.1 地址和指針的概念 int i,j,k;指針:變量的地址2000指針變量:存放指針的變量 (地址)10.2 變量的指針和指向變量的指針變量地址存變量地址的變量10.2.1 定義指針變量 int i,j, *point_1,*point_2; point_1=&i; point_2=&j; int i,j, *point_1=&i,*point_2=&j; 1200220002Point_1Point_2ij*指針變量+1(point_1+) 加基類型所占字節(jié)數(shù)2-整型 實型:4 雙精度:810。2。2 指針變量的引用&:取地址運算符*: 指針運算符* &a、& * poin

2、t_1、 * point+、10.2.3 指針變量作為函數(shù)參數(shù)(地址傳遞)例tp1031 對輸入的兩個數(shù)按大小順序輸出swap(int *p1,int *p2)int temp;temp=*p1;*p1=*p2;*p2=temp;main()int a,b;int *point_1,*point_2;scanf(%d,%d,&a,&b);point_1=&a;point_2=&b;if(ab) swap(point_1,point_2);printf(n%d,%dn,a,b);5,8用下列程序能否實現(xiàn)?swap(int x,int y)int temp;temp=x;x=y;y=temp;ma

3、in()int a,b;int *point_1,*point_2;scanf(%d,%d,&a,&b);point_1=&a;point_2=&b;if(ab) swap(point_1,point_2);printf(n%d,%dn,a,b);No ,why?用下列程序能否實現(xiàn)?swap(int *p1,int *p2)int temp;temp=p1;p1=p2;p2=temp;main()int a,b;int *point_1,*point_2;scanf(%d,%d,&a,&b);point_1=&a;point_2=&b;if(ab) swap(point_1,point_2);

4、printf(n%d,%dn,*point_1,*point_2);結(jié)論:想通過函數(shù)調(diào)用改變 n個變量的值(地址傳遞):1。設(shè)n 個指針指向這n個變量 2。指針變量作形參、實參 3。通過形參指針來改變n個變量的值10.3 指向數(shù)組的指針變量一、指向數(shù)組元素的指針1、定義: int a10, *p=a;或 int a10, *p; p=a;或 int a10, *p; p=a0; 20002002P+1:p+1 * d(指向下一個元素)P+i::p+i* d 整型:d=2,實型:d=42、數(shù)組元素的引用: ai *(p+ i) *(a+i) pi 四種引用方法等價(2)通過數(shù)組名(3)通過指針變

5、量3比1、2快 注意:1、a+ 2、p必須賦確定的值 a不變,p 可變。是否正確? p=a;*(p+):先取*p值,p再加1(*p)+:先取*p值,然后所得值 再加13、數(shù)組名作函數(shù)參數(shù)形參數(shù)組名是作為指針來處理的,具體有下列四種情況:形參 實參 數(shù)組名 數(shù)組名指針 數(shù)組名數(shù)組名 指針 指針 指針將數(shù)組中n個整數(shù)按相反順序存放形參x改成指針變量,實參為數(shù)組名實參、形參都用指針 *注意:main()中的指針變量一定指向一個確定的值已定義的數(shù)組,否則編譯時出錯。如果只改Sort()函數(shù)首部結(jié)果仍正確:xi、*(x+i)、*(a+i)、ai10.3.4 指向多維數(shù)組的指針與指針變量一、指向數(shù)組元素的

6、指針變量與一維數(shù)組一樣2、指向由m個元素組成的一維數(shù)組的指針變量定義:pP+1P+2*(p+0)*(p+1)*(p+2)*(p+0)+0*(*(p+0)+0)*(p+0)+1*(*(p+0)+1)*(p+0)+2*(p+0)+3*(p+1)+0*(p+1)+1*(p+1)+2*(p+1)+3*(p+2)+0*(p+2)+1*(p+2)+2*(p+2)+3行指針:p、a、 p+1、a+1、a0、a1列指針:在行指針的前面加上* 變成列指針行指針:在列指針的前面加上& 變成行指針績在內(nèi)存中開辟一個字符數(shù)組來存放字符串常量。首地址 p數(shù)組將字符串a(chǎn)復(fù)制為字符串b,并打印輸出可用 Printf(“%s

7、”,p2);下面的用法雖然合法但危險函數(shù)返回值的類型定義:使用: (*指針變量名)(形參)賦值: 指針變量= 函數(shù)名 不用加參數(shù)用途: 只代替函數(shù)名調(diào)用函數(shù)。其它如 p+、p+n 等均無意義例:求a、b中的大者。用一般方法如下:用函數(shù)指針方法如下:用指向函數(shù)的指針作函數(shù)參數(shù)(形參)編一個通用函數(shù),用指向函數(shù)的指針作形參,用任一函數(shù)名作實參,進行函數(shù)調(diào)用,達到對任意函數(shù)調(diào)用的目地。地址傳遞在用指向函數(shù)指針調(diào)用時必須有,不可省略。10.6 返回指針值的函數(shù)是指函數(shù)帶回的結(jié)果:指針定義:返回的指針指向的變量類型10.7 指針數(shù)組和指向指針的指針(二級指針)一、指針數(shù)組定義:P0 P1 P2 P3 均

8、是指針二、指向指針的指針(二級指針)定義:*p2*p1*p2p2p1a參數(shù)個數(shù)指向參數(shù)字符串的指針數(shù)組例TP1073.C1、若有說明int *p1 , *p2 , *p3 , *p4 ,ch ;則不能正確賦值的語句為_。A. p1= &ch ;scanf(%d,p1) ;B. p2=( int * ) malloc(1);scanf(%d,p2) ;C. scanf(%d,p3) ;D. p4= &ch ;*p4=522、若有說明 int i=4,j=2,a54=1,2,3,4,5,6,7,8,(*p)4;和賦值語句p=a;則對數(shù)組元素aij之值的正確引用為_.A. *(P+4*i+j) B.

9、*(P+i)jC. *(*(P+i)+j) D.*pij3、main()int a15,*p=a,i,*q,k;for (i=0;i15;i+)scanf(%d,p+);p=a;q=&a14;for (i=0;i7;i+,p+,q-)k=*p;*p=*q;*q=k;p=a;for (i=0;i15;i+)printf(%5d,*p+);printf(n);當(dāng)輸入為 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15時, 4、#include string.h;main()char s380,(*p)80=s,i,j,*q;for (i=0;i3;i+)scanf(%s,*(

10、p+i);q=*p;for (i=1;i3;i+)if (strcmp(q,*(p+i)0) q=*(p+i);printf(%sn,q);當(dāng)輸入:China Japan Germany5、下列是指向函數(shù)的指針變量p的正確定義方法。 (A)int *p() (B)int (*p)(C) int(*p)() (D) int * p6、下列定義中,_是指向m個元素的一維數(shù)組的指針。 (A)int (*p)5; (B) int *p5 (C) int (*p)() (D) int (*p)(5)7、若有以下說明語句:int a23=1,2,3,4,5,6, *p=a;int i,j;則是對數(shù)組元素aij值的正確引用。(A) ai+j (B) *(p+i*3+j)(C) *(*(a+i)+j) (D) *(*(p+i)+j)8、以下程序執(zhí)行的結(jié)果是。Point(char *pt);Main()char

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論