




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、2022-3-71第5章 指針的應(yīng)用5.1、指針概述指針概述一、內(nèi)存地址的概念一、內(nèi)存地址的概念地址編碼的基本單位是字節(jié),每個字節(jié)是一地址編碼的基本單位是字節(jié),每個字節(jié)是一個基本內(nèi)存單元。個基本內(nèi)存單元。 二、二、從內(nèi)存單元中存取數(shù)據(jù)的從內(nèi)存單元中存取數(shù)據(jù)的 方法方法1 1、通過變量名,稱為直接訪問方式,直接對、通過變量名,稱為直接訪問方式,直接對變量的存儲單元進(jìn)行存取訪問。在變量獲得內(nèi)存變量的存儲單元進(jìn)行存取訪問。在變量獲得內(nèi)存空間的同時,變量名也就成為了相應(yīng)內(nèi)存空間的空間的同時,變量名也就成為了相應(yīng)內(nèi)存空間的名稱,在變量的整個生存期內(nèi)都可以用這個名字名稱,在變量的整個生存期內(nèi)都可以用這個名
2、字訪問該內(nèi)存空間,表現(xiàn)在程序語句中就是通過變訪問該內(nèi)存空間,表現(xiàn)在程序語句中就是通過變量名存取變量內(nèi)容。量名存取變量內(nèi)容。 2022-3-722 2、通過地址,稱為間接訪問方式,先找到存、通過地址,稱為間接訪問方式,先找到存放變量的地址的變量,得到變量的地址,再根據(jù)放變量的地址的變量,得到變量的地址,再根據(jù)變量的地址找到變量的存儲單元,對它進(jìn)行存取變量的地址找到變量的存儲單元,對它進(jìn)行存取訪問。訪問。C+C+擁有在運(yùn)行時獲得變量的地址和操縱地址擁有在運(yùn)行時獲得變量的地址和操縱地址的能力。變量的地址可以使用地址運(yùn)算符的能力。變量的地址可以使用地址運(yùn)算符& &求得,求得,在某一變量
3、前加上地址運(yùn)算符在某一變量前加上地址運(yùn)算符& &,則為該變量的,則為該變量的地址,如:地址,如:&x&x表示變量表示變量x x的地址的地址數(shù)組名表示數(shù)組的首地址;函數(shù)的地址用函數(shù)組名表示數(shù)組的首地址;函數(shù)的地址用函數(shù)名表示。數(shù)名表示。用來存放地址的變量就叫做指針型變量,簡用來存放地址的變量就叫做指針型變量,簡稱指針。稱指針。 2022-3-73假設(shè)假設(shè)ptrptr為一指針,則語句:為一指針,則語句:ptr=&x;ptr=&x;就將變量就將變量x x的地址存入了指針的地址存入了指針ptrptr中。中。也經(jīng)常簡稱為也經(jīng)常簡稱為“指針指針ptrptr指
4、向變量指向變量x x”??梢酝ㄟ^指針得到變量可以通過指針得到變量x x的值或改變變量的值或改變變量x x的值:的值:* *ptr=2;ptr=2;/相當(dāng)于相當(dāng)于 x=2x=2y=y=* *ptr;ptr;/將將x x的值賦給的值賦給y y2022-3-74例例5.15.1、閱讀如下程序:閱讀如下程序:源程序清單:源程序清單:#include#includeusing namespace std;using namespace std;void main( )void main( ) int a;int a; int int * *p;p;a=10;a=10;p=&a;p=&a;
5、coutacouta的值表示方法的值表示方法1 1:aendl;aendl;coutacouta的值表示方法的值表示方法2 2:* *pendl;pendl;coutacouta的地址表示方法的地址表示方法1 1:&aendl;&aendl;coutacouta的地址表示方法的地址表示方法2 2:pendl;pendl; 2022-3-755.2、指針變量的定義、賦值及使用指針變量的定義、賦值及使用一、一、指針變量的定義指針變量的定義指針本身也是一種變量,須先聲明后使用。指針本身也是一種變量,須先聲明后使用。聲明指針類型的變量是在聲明變量的同時加聲明指針類型的變量是在聲明變量的
6、同時加上上* *來完成的。對應(yīng)于各種類型的數(shù)據(jù)都有相應(yīng)來完成的。對應(yīng)于各種類型的數(shù)據(jù)都有相應(yīng)的指針類型。的指針類型。* *放在指針定義中時,被稱為放在指針定義中時,被稱為指針定義符指針定義符。放在可執(zhí)行語句中的指針前被稱為放在可執(zhí)行語句中的指針前被稱為指針運(yùn)算指針運(yùn)算符符,也稱為,也稱為“間接訪問間接訪問”運(yùn)算符。運(yùn)算符。2022-3-76指針變量的聲明語句,由數(shù)據(jù)類型后跟星號,指針變量的聲明語句,由數(shù)據(jù)類型后跟星號,再跟隨指針變量名組成。再跟隨指針變量名組成。數(shù)據(jù)類型數(shù)據(jù)類型 * *指針變量名;指針變量名;如如: :intint* * iptr; iptr;int int * *iptr;i
7、ptr;int int * * iptr; iptr;intint* *iptr;iptr;在指針定義中,一個在指針定義中,一個* *只能表示一個指針。只能表示一個指針。int int * * iptr1,iptr2; iptr1,iptr2;/iptr1/iptr1指針變量,指針變量,iptr2iptr2整型變量整型變量int int * * iptr1, iptr1, * * iptr2; iptr2; /兩個指針變量兩個指針變量2022-3-77地址和指針的關(guān)系地址和指針的關(guān)系int xint x,* *ptr ;ptr ;x=3x=3; ptr=&x ; ptr=&x
8、; 如果如果ptrptr指向指向x x,那么,那么* *ptr ptr 的值為的值為x x的值,以的值,以后對后對* *ptrptr的賦值等價于對的賦值等價于對x x的賦值。的賦值。#include #include using namespace std;using namespace std;void main( )void main( ) int x=3,int x=3,* *ptr ;ptr ;ptr=&x ; ptr=&x ; * *ptr=11;ptr=11;coutxendl;coutxendl;/x=11/x=11 2022-3-78二、二、指針變量的賦值指針變
9、量的賦值與變量定義一樣,定義好指針變量后也可以與變量定義一樣,定義好指針變量后也可以對它進(jìn)行初始化,指針變量可以初始化為對它進(jìn)行初始化,指針變量可以初始化為0、NULL或一個地址。數(shù)值為或一個地址。數(shù)值為0或者或者NULL的指針不的指針不指任何內(nèi)容。數(shù)值指任何內(nèi)容。數(shù)值0是可以直接賦給指針變量的是可以直接賦給指針變量的唯一整數(shù)值。唯一整數(shù)值。 1.1.在定義指針變量的同時進(jìn)行初始化賦值,一般在定義指針變量的同時進(jìn)行初始化賦值,一般格式如下:格式如下: 數(shù)據(jù)類型數(shù)據(jù)類型 * *指針名初始地址;指針名初始地址; 2022-3-792.2.定義指針變量后,用賦值語句將其初始化。定義指針變量后,用賦值
10、語句將其初始化。指針變量名指針變量名= =地址;地址; 可以是變量的地址、數(shù)組名、函數(shù)名等。可以是變量的地址、數(shù)組名、函數(shù)名等。用變量地址作為初值時,該變量的定義必須用變量地址作為初值時,該變量的定義必須在指針初始化之前定義。在指針初始化之前定義。 不能把常量或表達(dá)式的地址賦給指針變量。不能把常量或表達(dá)式的地址賦給指針變量。 不能將一個非不能將一個非0 0整數(shù)直接賦給指針變量,但可整數(shù)直接賦給指針變量,但可以賦整數(shù)值以賦整數(shù)值0 0,表示該指針為空指針。,表示該指針為空指針。例如:例如:int int * *p; p=0;p; p=0; p p為空指針,不指向任何地址。為空指針,不指向任何地址
11、。 2022-3-7103.3.允許聲明指向允許聲明指向 void void 類型的指針,該指針可以類型的指針,該指針可以被賦予任何類型對象的地址。被賦予任何類型對象的地址。 例如:例如: void void * *general; general; int int * *point;point; int i; int i; general=&i; general=&i; point=( int point=( int * *) general;) general;2022-3-711例例5.25.2、閱讀如下程序:、閱讀如下程序:源程序清單:源程序清單:#include#in
12、cludeusing namespace std;using namespace std;void main( )void main( ) int x;int x;int int * *p;p;int int * *q;q; int a=3; int a=3; int int * *pa=&a; pa=&a; p=&x ;p=&x ; q=p;q=p; coutcout* *paendl;paendl; 2022-3-712#include #include using namespace std;using namespace std;void main()v
13、oid main() int x=3,int x=3,* *ptr=&x;ptr=&x;* *ptr=52;ptr=52;coutxendl;coutxendl;/52/52coutcout* *ptrendl;/52ptrendl;/52coutptrendl;coutptrendl;/變量變量x x的地址的地址cout&xendl;cout&xendl; /變量變量x x的地址的地址 2022-3-713三、三、指針變量的使用指針變量的使用例例5.35.3、閱讀如下程序:、閱讀如下程序:源程序清單:源程序清單:#include#includeusing na
14、mespace std;using namespace std;void main( )void main( ) int x,int x,* *p;p; p=&x ;p=&x ; cincin* *p;p; coutcout* *pendl;pendl; 2022-3-714指針在使用前要進(jìn)行初始化或賦值,指針未指針在使用前要進(jìn)行初始化或賦值,指針未賦值將非常危險。賦值將非常危險。#include #include using namespace std;using namespace std;void main()void main() int x=26int x=26;in
15、t int * *ptr;ptr;* *ptr=58;ptr=58; /此時此時ptrptr是一個隨機(jī)地址是一個隨機(jī)地址coutxendl;coutxendl; 很可能已經(jīng)破壞了另一變量的值,甚至修改很可能已經(jīng)破壞了另一變量的值,甚至修改了函數(shù)的返回地址等。了函數(shù)的返回地址等。2022-3-7155.3、簡單變量與指針、簡單變量與指針指針的類型是它所指向變量的類型。指針值不是指針的類型是它所指向變量的類型。指針值不是整型數(shù),在使用中必須類型匹配。如:整型數(shù),在使用中必須類型匹配。如:int x=26int x=26;int int * *ptr=&x;ptr=&x; /定義指針
16、變量定義指針變量* *ptr=&x;ptr=&x; /error:/error:不能將整型地址轉(zhuǎn)換成整型數(shù)不能將整型地址轉(zhuǎn)換成整型數(shù)* *ptr=50;ptr=50; /執(zhí)行語句:執(zhí)行語句:* *在此處作間接引用在此處作間接引用可以對不同的類型作強(qiáng)制轉(zhuǎn)換,如:可以對不同的類型作強(qiáng)制轉(zhuǎn)換,如:* *ptr=(int)&x;ptr=(int)&x;表示將變量表示將變量x x的地址值作為一個整型數(shù)賦給變的地址值作為一個整型數(shù)賦給變量量* *ptrptr,即變量,即變量x x。2022-3-716因為指針是有類型的,所以給指針賦值不但因為指針是有類型的,所以給指針賦值不
17、但要是一個地址,而且應(yīng)該是一個與該指針類型相要是一個地址,而且應(yīng)該是一個與該指針類型相符的變量的地址。或者說指針的類型是它所指向符的變量的地址?;蛘哒f指針的類型是它所指向變量的類型。變量的類型。float f=34.5,float f=34.5,* *fptr=&f;fptr=&f;/浮點(diǎn)指針浮點(diǎn)指針int int * * iptr=&f; iptr=&f;/error:/error:浮點(diǎn)變量地址賦給浮點(diǎn)變量地址賦給整型指針整型指針iptr=fptr;iptr=fptr;/error:/error:浮點(diǎn)指針賦給整型指針浮點(diǎn)指針賦給整型指針將一個指針賦值給另一個指
18、針,結(jié)果是兩個將一個指針賦值給另一個指針,結(jié)果是兩個指針指向一個相指針指向一個相 同的地址單元。同的地址單元。2022-3-717例例5.45.4、閱讀如下程序:、閱讀如下程序:源程序清單:源程序清單:#include#includeusing namespace std;using namespace std;void main( )void main( ) int x,int x,* *p;p; x=3; x=3; p=&x ; p=&x ; * *p=p=* *p+10; p+10; cout cout* *pendl;pendl; 2022-3-718例例5.55.5、
19、輸入、輸入a a和和b b兩個整數(shù),運(yùn)用指針技術(shù)按先兩個整數(shù),運(yùn)用指針技術(shù)按先大后小的順序輸出大后小的順序輸出a a和和b b。 源程序清單:源程序清單:#include #include #include #include using namespace std;using namespace std;void main(void)void main(void) /利用間接訪問方式來操作利用間接訪問方式來操作 2022-3-719int a,b;int a,b;int int * *p1=&a;p1=&a;int int * *p2=&b;p2=&b;cout
20、input a and b:endl;coutinput a and b:cin* *p1p1* *p2;p2;if(if(* *p1p1* *p2)p2) cout cout按先大后小的順序輸出的按先大后小的順序輸出的a a和和b b為為:* *p2setw(4)p2setw(4)* *p1endl;p1endl; else else cout cout按先大后小的順序輸出的按先大后小的順序輸出的a a和和b b為為:* *p1setw(4)p1setw(4)* *p2endl;p2endl; 2022-3-720指針變量的運(yùn)算指針變量的運(yùn)算指針的算術(shù)運(yùn)算指針的算術(shù)運(yùn)算指針加一,減一運(yùn)算指針
21、加一,減一運(yùn)算是指向下一個或前一個數(shù)據(jù)。是指向下一個或前一個數(shù)據(jù)。如:如:y=y=* *px+ px+ 相當(dāng)于相當(dāng)于y=y=* *(px+) /px(px+) /px為一指針為一指針指針與整數(shù)的加減運(yùn)算指針與整數(shù)的加減運(yùn)算指針指針 p p 加上或減去加上或減去 n n ,其意義是指針當(dāng)前指,其意義是指針當(dāng)前指向位置的前方或后方第向位置的前方或后方第 n n 個數(shù)據(jù)的地址。個數(shù)據(jù)的地址。這種運(yùn)算的結(jié)果值取決于指針指向的數(shù)據(jù)類型。這種運(yùn)算的結(jié)果值取決于指針指向的數(shù)據(jù)類型。2022-3-721pa-2pa-1pa+1pa+2pa+3*(pa-2)*pa*(pa+1)*(pa+2)*(pa+3)*(p
22、a-1)short *pa2022-3-722pb-1pbpb+1pb+2*(pb-1)*pb*(pb+1)*(pb+2)int *pb2022-3-723#include #include using namespace std; using namespace std; void main()void main() int n=20,int n=20,* *ptr=&n,ptr=&n,* *ptr1,y;ptr1,y;y=y=* *ptr;ptr;coutptr=ptrty=yendl;coutptr=ptrty=yendl;y=y=* *(ptr+);(ptr+);/y=
23、/y=* *(+ptr);(+ptr);coutptr=ptrty=yendl;coutptr=ptrty=yendl;ptr1=ptr+3;ptr1=ptr+3;y=y=* *ptr1;ptr1;coutptr=ptr1ty=yendl;coutptr=ptr1ty=yendl; 2022-3-724關(guān)系運(yùn)算關(guān)系運(yùn)算表示所指變量在內(nèi)存中的位置關(guān)系表示所指變量在內(nèi)存中的位置關(guān)系如:兩個指針變量指向同一個數(shù)組中的元素如:兩個指針變量指向同一個數(shù)組中的元素時,其關(guān)系運(yùn)算的結(jié)果表明了這兩個指針變量所時,其關(guān)系運(yùn)算的結(jié)果表明了這兩個指針變量所指向的數(shù)組元素的先后關(guān)系指向的數(shù)組元素的先后關(guān)系char a
24、10; char *p1,*p2; p1=a+2; p2=a+4; p1+;p2-;指針可以和零之間進(jìn)行等于或不等于的關(guān)系運(yùn)算。指針可以和零之間進(jìn)行等于或不等于的關(guān)系運(yùn)算。例如:例如:p=0;p=0;/表示空指針表示空指針 2022-3-725例例5.55.5、編寫一交換兩個整型變量值的函數(shù),并、編寫一交換兩個整型變量值的函數(shù),并寫一主函數(shù)測試。寫一主函數(shù)測試。#include#include using namespace std; using namespace std; void swap(intvoid swap(int* *x,intx,int* *y)y) int t;int t;
25、t=t=* *x,x,* *x=x=* *y,y,* *y=t;y=t; void main()void main() int a=1,b=2;int a=1,b=2;coutcout交換前交換前: a=a,b=bendl;: a=a,b=bendl;swap(&a,&b);swap(&a,&b);coutcout交換后交換后: a=a,b=bendl;: a=a,b=bendl; 2022-3-7265.4、一維數(shù)組與指針、一維數(shù)組與指針數(shù)組名可以拿來初始化指針,數(shù)組名就是數(shù)數(shù)組名可以拿來初始化指針,數(shù)組名就是數(shù)組第一個元素的地址,即對于數(shù)組組第一個元素的地址
26、,即對于數(shù)組a a,有,有a=&a0a=&a0。假設(shè)按下面定義數(shù)組假設(shè)按下面定義數(shù)組a a及指針及指針iptriptr:int a10, int a10, * *iptr=a;iptr=a;對第對第i i個元素可表示成以下四種:個元素可表示成以下四種:ai ai 、* *(a+i) (a+i) 、iptri iptri 、* *(iptr+i)(iptr+i)這四個等價關(guān)系使得數(shù)組與指針相互轉(zhuǎn)換非常靈這四個等價關(guān)系使得數(shù)組與指針相互轉(zhuǎn)換非常靈活。活。2022-3-727與上面相對應(yīng)的有下面四個地址等價關(guān)系:與上面相對應(yīng)的有下面四個地址等價關(guān)系:&ai &ai a
27、+i a+i iptr+i iptr+i &iptri&iptria+ia+i表示第表示第i i個數(shù)組元素的地址,個數(shù)組元素的地址,iptr+iiptr+i也同也同樣是指向數(shù)組樣是指向數(shù)組a a的第的第i i個數(shù)組元素。個數(shù)組元素。相互等價相互等價2022-3-728例例5.65.6、求數(shù)組元素的和、求數(shù)組元素的和#include#includeusing namespace std; using namespace std; int sum1,sum2,sum3,sum4,sum5,int sum1,sum2,sum3,sum4,sum5,* *iPtr;iPtr;int i
28、Array =1,4,2,7,13,32,21,48,16,30;int iArray =1,4,2,7,13,32,21,48,16,30;void main()void main() int size,n;int size,n; size=sizeof(iArray)/sizeof( size=sizeof(iArray)/sizeof(* *iArray);iArray);/ sizeof(iArray)/ sizeof(iArray):數(shù)組:數(shù)組iArrayiArray所占字節(jié)數(shù)所占字節(jié)數(shù)/ sizeof(/ sizeof(* *iArray)iArray):數(shù)組元素類型所占字節(jié)數(shù):數(shù)
29、組元素類型所占字節(jié)數(shù) for(n=0;nsize;n+) sum1+=iArrayn;for(n=0;nsize;n+) sum1+=iArrayn;/方法方法1 12022-3-729iPtr=iArray;iPtr=iArray;/方法方法2 2for(n=0;nsize;n+) sum2+=for(n=0;nsize;n+) sum2+=* *iPtr+; iPtr+; iPtr=iArray; iPtr=iArray; /方法方法3 3for(n=0;nsize;n+) sum3+=for(n=0;nsize;n+) sum3+=* *(iPtr+n); (iPtr+n); iPtr=
30、iArray; iPtr=iArray; /方法方法4 4for(n=0;nsize;n+) sum4+=iPtrn; for(n=0;nsize;n+) sum4+=iPtrn; /方法方法5 5for(n=0;nsize;n+) sum5+=for(n=0;nsize;n+) sum5+=* *(iArray+n); (iArray+n); coutsum1=sum1,sum2=sum2coutsum1=sum1,sum2=sum2,sum3=sum3,sum4=sum4,sum3=sum3,sum4=sum4,sum5=sum5endl;,sum5=sum5endl; 2022-3-73
31、0例例5.75.7、閱讀如下程序:、閱讀如下程序:源程序清單:源程序清單:#include #include using namespace std;using namespace std;void main( )void main( ) char a10=abcdefghi; char a10=abcdefghi; char char * *p1,p1,* *p2; p2; p1=a; p1=a; p1+=2; p1+=2;2022-3-731 p2=a+4; /p2=a+4; /指針變量指針變量p2p2,直接由數(shù)組名加上,直接由數(shù)組名加上4 4,指向數(shù)組的第五個數(shù)組元素的內(nèi)存單元指向數(shù)組的
32、第五個數(shù)組元素的內(nèi)存單元 if(p1p2)coutp1if(p1p2)coutp1所指向的數(shù)組元素在所指向的數(shù)組元素在p2p2所指所指向的數(shù)組元素前面!向的數(shù)組元素前面!endl; endl; else coutp1 else coutp1所指向的數(shù)組元素在所指向的數(shù)組元素在p2p2所指向的所指向的數(shù)組元素后面!數(shù)組元素后面!endl; endl; p1+; p1+; p2-; p2-; if(p1=p2)coutp1 if(p1=p2)coutp1和和p2p2同時指向數(shù)組中的同同時指向數(shù)組中的同一個元素且元素值為:一個元素且元素值為:* *p1endl;p1endl; else coutp1
33、 else coutp1和和p2p2沒有指向數(shù)組中的同一個沒有指向數(shù)組中的同一個元素!元素!endl;endl; 2022-3-732例例5.85.8、利用指針技術(shù),將鍵盤輸入的、利用指針技術(shù),將鍵盤輸入的N個整數(shù)個整數(shù)按相反的順序存放并輸出。按相反的順序存放并輸出。思路分析:思路分析:分別取出數(shù)組最前面和最后面的元素,進(jìn)行分別取出數(shù)組最前面和最后面的元素,進(jìn)行交換,即交換,即a0與與aN-1交換;然后再分別取出交換;然后再分別取出a1與與aN-2交換;直到交換完畢。交換;直到交換完畢。 2022-3-733源程序清單:源程序清單:#include #include #include #inc
34、lude using namespace std;using namespace std;int main(void)int main(void) int a10,i,j,temp,int a10,i,j,temp,* *p; p; coutInput ten interger:endl;coutInput ten interger:endl; for(p=a;pa+10;p+)for(p=a;pcin* *p;p;p=a;p=a;2022-3-734 for(i=0,j=10-1;ij;i+,j-)for(i=0,j=10-1;ij;i+,j-) temp= temp=* *(p+i);(p
35、+i); * *(p+i)=(p+i)=* *(p+j);(p+j); * *(p+j)=temp;(p+j)=temp; for(p=a;pa+10;p+)for(p=a;pa+10;p+) coutsetw(4) coutsetw(4)* *p;p; coutendl; coutendl; return 0; return 0; 2022-3-735例例5.95.9、把一個整數(shù)插入到一個由小到大的有序、把一個整數(shù)插入到一個由小到大的有序整數(shù)序列中,并仍然保持由小到大的順序。整數(shù)序列中,并仍然保持由小到大的順序。設(shè)有設(shè)有1010個整數(shù)按由小到大的順序存放在數(shù)組個整數(shù)按由小到大的順序存放在數(shù)組
36、a a中,待插入的數(shù)放在變量中,待插入的數(shù)放在變量x x中。中。#include#include#include #include using namespace std; using namespace std; void main(void)void main(void) const int N=10;const int N=10;int aN+1,p,x,int aN+1,p,x,* *t;t;2022-3-736coutcout輸入輸入a a數(shù)組:數(shù)組:endl;endl;for(t=a;ta+N;t+)for(t=a;tcin* *t;t;coutcout輸入待插入的數(shù)輸入待插入的數(shù)
37、x x:endl;x;cinx;t=a;p=0; t=a;p=0; while (xwhile (x* *(t+p)&pN)(t+p)&p=a+p;t-)for (t=a+N-1;t=a+p;t-) * *(t+1)=(t+1)=* *t;t;t=a+p;t=a+p; * *t=x;t=x;for (t=a;t=a+N;t+)for (t=a;t=a+N;t+) coutsetw(3)coutsetw(3)* *t;t;coutendl;coutendl; 2022-3-737例例5.105.10、從鍵盤輸入整數(shù)集合、從鍵盤輸入整數(shù)集合a a、b b的元素個數(shù)和的元素個數(shù)和各個
38、元素的值(不相同),計算并輸出其交集。各個元素的值(不相同),計算并輸出其交集。#include #include using namespace std; using namespace std; #include #include void main(void)void main(void) const int M=20,N=10;const int M=20,N=10;int aM,bN,cM;int aM,bN,cM;int d,e,f=0,int d,e,f=0,* *pa,pa,* *pb,pb,* *pc;pc;2022-3-738coutcout輸入數(shù)組輸入數(shù)組a a中元素的個
39、數(shù):中元素的個數(shù):endl;d; cind; coutcout輸入數(shù)組輸入數(shù)組a a的的dd個元素:個元素:endl;endl;for(pa=a;paa+d;pa+)for(pa=a;pacin* *pa;pa;coutcout輸入數(shù)組輸入數(shù)組b b中元素的個數(shù):中元素的個數(shù):endl;e;cine;coutcout輸入數(shù)組輸入數(shù)組b b的的ee個元素:個元素:endl;endl;for(pb=b;pbb+e;pb+)for(pb=b;pbcin* *pb;pb;2022-3-739for(pa=a,pc=c;paa+d;pa+)for(pa=a,pc=c;paa+d;pa+) for(pb=
40、b;pbb+e;pb+) for(pb=b;pbb+e;pb+) if(if(* *pa=pa=* *pb)pb) * *pc+=pc+=* *pa;pa;f+;f+; break;break;coutcout交集交集c c的各個元素依次為的各個元素依次為:endl;:endl;for(pc=c;pcc+f;pc+)for(pc=c;pcc+f;pc+)coutsetw(3)coutsetw(3)* *pc;pc;coutendl;coutendl; 2022-3-740例例5.115.11、從鍵盤輸入整數(shù)集合、從鍵盤輸入整數(shù)集合a a、b b的元素個數(shù)和的元素個數(shù)和各個元素的值(不相同)各個
41、元素的值(不相同) ,計算并輸出其并集。,計算并輸出其并集。#include #include using namespace std; using namespace std; #include #include void main(void)void main(void) const int M=20,N=10;const int M=20,N=10;int aM,bN,cM+N;int aM,bN,cM+N;int d,e,f=0,int d,e,f=0,* *pa,pa,* *pb,pb,* *pc;pc;2022-3-741coutcout輸入數(shù)組輸入數(shù)組a a中元素的個數(shù):中元素的
42、個數(shù):endl;d; cind; coutcout輸入數(shù)組輸入數(shù)組a a的的dd個元素:個元素:endl;endl;for(pa=a;paa+d;pa+)for(pa=a;pacin* *pa;pa;coutcout輸入數(shù)組輸入數(shù)組b b中元素的個數(shù):中元素的個數(shù):endl;e;cine;coutcout輸入數(shù)組輸入數(shù)組b b的的ee個元素:個元素:endl;endl;for(pb=b;pbb+e;pb+)for(pb=b;pbcin* *pb;pb;2022-3-742for(pa=a,pc=c;paa+d;pa+,pc+)for(pa=a,pc=c;paa+d;pa+,pc+) * *pc
43、=pc=* *pa; f+;pa; f+;for(pb=b;pbb+e;pb+)for(pb=b;pbb+e;pb+) for(pa=a;paa+d;pa+)for(pa=a;pa=a+d)if(pa=a+d) * *pc+=pc+=* *pb; f+;pb; f+; coutcout“并集并集c c的各個元素依次為的各個元素依次為:endl;:endl;for (pc=c;pcc+f;pc+)for (pc=c;pcc+f;pc+)coutsetw(3)coutsetw(3)* *pc;pc;coutendl;coutendl; 2022-3-743例例5.125.12、編程實現(xiàn)將一個數(shù)組中
44、的數(shù)據(jù)按相反順、編程實現(xiàn)將一個數(shù)組中的數(shù)據(jù)按相反順序存放。序存放。思路分析:用一個子函數(shù)實現(xiàn)按相反順序存放,思路分析:用一個子函數(shù)實現(xiàn)按相反順序存放,主函數(shù)調(diào)用該子函數(shù)實現(xiàn)按相反順序存放。主函數(shù)調(diào)用該子函數(shù)實現(xiàn)按相反順序存放。#include #include using namespace std;using namespace std;void invert(int void invert(int * *p,int n)p,int n) int i,j,temp; int i,j,temp; for(i=0,j=n-1;ij;i+,j-) for(i=0,j=n-1;ij;i+,j-) t
45、emp=temp=* *(p+i);(p+i); * *(p+i)=(p+i)=* *(p+j);(p+j); * *(p+j)=temp;(p+j)=temp; 2022-3-744int main(void)int main(void) int a10,i; int a10,i; coutInput ten interger:endl; coutInput ten interger:endl; for(i=0;i10;i+) for(i=0;iai; cinai; invert(a,10); invert(a,10); for(i=0;i10;i+) for(i=0;i10;i+) coutaiendl; coutaiendl; return 0; return 0; 2022-3-7455.5、二維數(shù)組與指針、二維數(shù)組與指針例例5.135
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年施工員專業(yè)基礎(chǔ)知識全真模擬試卷及答案(共七套)
- 精明寶寶測試題及答案
- 新型納米材料的合成挑戰(zhàn)試題及答案
- 安全工程師考試中關(guān)于事故處理的求解考題試題及答案
- 有機(jī)合成反應(yīng)類型試題及答案
- 黃石社區(qū)面試真題及答案
- 2025年公務(wù)員考試題目及答案
- 家具設(shè)計師的創(chuàng)新思維與案例分析試題及答案
- 小學(xué)教育教學(xué)反思對教師發(fā)展的重要性試題及答案
- 中藥現(xiàn)代化進(jìn)程中的國際市場中藥產(chǎn)品價格策略研究報告
- 幼兒園音樂教育活動設(shè)計與實施課件
- 石槽村洗煤廠職業(yè)健康管理及職業(yè)病防治知識培訓(xùn)考試試卷
- 急救技術(shù)氣道開放技術(shù)課件
- 如何申報縱向課題
- 在線考試系統(tǒng)的設(shè)計與實現(xiàn)論文
- 個性化家庭醫(yī)生簽約服務(wù)包
- GA∕T 1622-2019 法庭科學(xué) 生物檢材中沙蠶毒素、殺蟲雙、殺蟲環(huán)和殺螟丹檢驗 氣相色譜、氣相色譜-質(zhì)譜和液相色譜-質(zhì)譜法
- 國際商事仲裁法
- 區(qū)域電力系統(tǒng)規(guī)劃設(shè)計開題報告
- 居民企業(yè)資產(chǎn)股權(quán)劃轉(zhuǎn)特殊性稅務(wù)處理申報表
- 高層建筑無地下室傾覆及滑移計算
評論
0/150
提交評論