本章主要教學(xué)內(nèi)容_第1頁(yè)
本章主要教學(xué)內(nèi)容_第2頁(yè)
本章主要教學(xué)內(nèi)容_第3頁(yè)
本章主要教學(xué)內(nèi)容_第4頁(yè)
本章主要教學(xué)內(nèi)容_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

會(huì)計(jì)學(xué)1本章主要教學(xué)內(nèi)容2§7.1指針(Pointer)的概述C的數(shù)據(jù)類型:

基本類(簡(jiǎn)單類)——字符型/整型/實(shí)型/枚舉型構(gòu)造類(組合類)——數(shù)組/結(jié)構(gòu)體/共用體指針類空類型(void)第1頁(yè)/共65頁(yè)31.內(nèi)存地址2.尋址方式整型變量i…...…...2000200420062005200120022003地址10與指針相關(guān)的概念與問(wèn)題第2頁(yè)/共65頁(yè)4內(nèi)存是計(jì)算機(jī)內(nèi)的存儲(chǔ)部件,所有指令和數(shù)據(jù)都保存在內(nèi)存內(nèi)速度快,但是掉電即失可以隨機(jī)訪問(wèn)只要指名要訪問(wèn)的內(nèi)存單元的地址,就可以立即訪問(wèn)到該單元地址是一個(gè)無(wú)符號(hào)整數(shù),其字長(zhǎng)一般與主機(jī)相同內(nèi)存中的每個(gè)字節(jié)都有唯一的一個(gè)地址地址按字節(jié)編號(hào),按類型分配空間內(nèi)存地址返回第3頁(yè)/共65頁(yè)5如何讀寫內(nèi)存中的數(shù)據(jù)?通過(guò)變量的地址訪問(wèn)變量所在的存儲(chǔ)單元兩種尋址方式

(1)直接(尋址)訪問(wèn)直接按變量地址來(lái)存取變量?jī)?nèi)容的訪問(wèn)方式

(2)間接(尋址)訪問(wèn)通過(guò)指針變量來(lái)間接存取它所指向的變量的訪問(wèn)方式尋址方式…...…...2000200420062002101214a的首地址2000a的首地址Pa*P第4頁(yè)/共65頁(yè)6指針(Pointer)的概念指針是C語(yǔ)言提供的一種數(shù)據(jù)類型,它只存放地址型的數(shù)據(jù)指針變量專門存放地址型數(shù)據(jù)的變量變量的指針變量的地址指針的使用原則先定義,后使用永遠(yuǎn)要清楚每個(gè)指針指向了哪里永遠(yuǎn)要清楚指針指向的位置是什么第5頁(yè)/共65頁(yè)7指針變量的定義指針變量定義的一般形式:

類型關(guān)鍵字*指針變量名例:int*p;定義了一個(gè)指針變量p,簡(jiǎn)稱指針pP里保存一個(gè)地址。此時(shí)這個(gè)地址是哪呢(p指向哪呢)?指針變量初始化P=&a;*p就像普通的變量一樣使用,其值是p指向的內(nèi)存的內(nèi)容

p可以動(dòng)態(tài)地指向不同內(nèi)存,從而使*p代表不同的變量&a指針P*P變量a&a第6頁(yè)/共65頁(yè)8定義指針變量注意以下問(wèn)題

(1)變量前面的“*”不能省略。

int*ptr1,ptr2;如:(2)指針變量只能指向定義時(shí)所規(guī)定類型的變量。

(3)引用指針變量前,必須讓它指向一個(gè)變量。第7頁(yè)/共65頁(yè)9判斷對(duì)錯(cuò)?

inti,*p;p=&i;

int*p;float*q;p=q;inti;float*p;p=&i;int*p;p=100;指針變量只存放地址!一個(gè)指針變量不能指向與其類型不同的變量!應(yīng)在類型相同的指針變量之間賦值第8頁(yè)/共65頁(yè)10&與*操作符

&用來(lái)取變量的地址inti,*p;

p=&i;int*p,a[10];

p=a;int*p,a[10];

p=&a[0];int*p,a[10];

p=&a[5];*用來(lái)取指針指向地址的內(nèi)容inti,*p;

p=&i;

*p=0;int*p,a[10];

p=a;

*p=0;int*p,a[10];

p=&a[0];

*p=0;int*p,a[10];

p=&a[5];

*p=0;第9頁(yè)/共65頁(yè)11指針的指向

指針指向非其定義時(shí)聲明的數(shù)據(jù)類型,將引起warningVoid*類型的指針可以指向任意類型的變量指針在初始化時(shí)一般常用*p=NULL;NULL表示空指針,即無(wú)效指針但它只是邏輯上無(wú)效,并不是真正地?zé)o效避免指針變量非法引用如果指針指向一個(gè)非你控制的內(nèi)存空間,并對(duì)該空間進(jìn)行訪問(wèn),將可能造成危險(xiǎn)inti;float*p;p=&i;使用時(shí)強(qiáng)制類型轉(zhuǎn)換例

char*p1;void*p2;p1=(char*)p2;第10頁(yè)/共65頁(yè)12例main(){inti=10;int*p;

*p=i;printf("%d",*p);}危險(xiǎn)!例

main(){inti=10;int*p;

p=&i;*p=20;printf("%d",*p);}指針變量p…...…...2000200420062005整型變量i10200120022003隨機(jī)第11頁(yè)/共65頁(yè)13指針與其它類型變量的對(duì)比

共性在內(nèi)存中占據(jù)一定大小的存儲(chǔ)單元先定義,后使用特殊性它的內(nèi)容只能是地址,而不能是數(shù)據(jù)必須初始化后才能使用,否則指向不確定的存儲(chǔ)單元只能指向同一基類型的變量可參與的運(yùn)算:加、減一個(gè)整數(shù),自增、自減、關(guān)系、賦值第12頁(yè)/共65頁(yè)14指針運(yùn)算(1)

算術(shù)運(yùn)算

int*p,a[10];p=a;p++;/*p的值增加多少?*/6000600160026003600460056006pp+1指針的加減運(yùn)算是以其指向的類型的字長(zhǎng)為單位的第13頁(yè)/共65頁(yè)15指針運(yùn)算(2)

int*p,*q,a[10];

p=a;

q=&a[5];q–p其值為5,代表差5個(gè)int字長(zhǎng)q=p+3;指針運(yùn)算不能亂算一般只進(jìn)行指針和整數(shù)的加減運(yùn)算,同類型指針之間的減法運(yùn)算其它運(yùn)算,比如乘法、除法、浮點(diǎn)運(yùn)算、指針之間的加法等,并無(wú)意義,所以也不支持第14頁(yè)/共65頁(yè)16指針運(yùn)算(3)

關(guān)系運(yùn)算(1)只有指向同一種數(shù)據(jù)類型的兩個(gè)指針才能進(jìn)行關(guān)系運(yùn)算,值為1或0

p>qp<qp==q(2)指針不與非指針量進(jìn)行比較,但可與NULL(即0值)進(jìn)行等或不等的關(guān)系運(yùn)算,判斷p是否為空指針

P==NULLp!=NULL第15頁(yè)/共65頁(yè)17賦值運(yùn)算指針在使用前一定要賦值為指針變量賦的值必須是一個(gè)地址main(){

int*p; scanf("%d",p);…}main(){

inta,*p=&a;scanf("%d",p);…}指針運(yùn)算(4)

第16頁(yè)/共65頁(yè)18指針與函數(shù)

指針既然是數(shù)據(jù)類型,自然可以做函數(shù)的參數(shù)和返回值的類型指針做參數(shù)的經(jīng)典例子:兩數(shù)的互換第17頁(yè)/共65頁(yè)19例7.1:編寫函數(shù)實(shí)現(xiàn)兩數(shù)的互換voidSwap(int*x,int*y){inttemp;temp=*x;*x=*y;*y=temp;}main(){inta,b;a=15;b=8;Swap(&a,&b);printf("a=%d,b=%d",a,b);}

voidSwap(intx,inty){inttemp;temp=x;x=y;y=temp;}main(){inta,b;a=15;b=8;Swap(a,b);printf("a=%d,b=%d",a,b);}程序1程序2主調(diào)函數(shù)被調(diào)函數(shù)實(shí)參形參結(jié)果有何不同?第18頁(yè)/共65頁(yè)20主調(diào)函數(shù)被調(diào)函數(shù)main(){inta,b;a=15;b=8;Swap(a,b);printf("a=%d,b=%d",a,b);}voidSwap(intx,inty){inttemp;temp=x;x=y;y=temp;}1515ab實(shí)參形參88xyab程序1xy沒(méi)互換第19頁(yè)/共65頁(yè)21簡(jiǎn)單變量作函數(shù)參數(shù)圖7-1Swap函數(shù)調(diào)用前后參數(shù)變化的示意圖c)從Swap函數(shù)返回①③y

15815(b)執(zhí)行Swap函數(shù)158a)調(diào)用Swap函數(shù)temp

xy

Swap函數(shù)②158main函數(shù)atempx81515tempxy

b158158aabb第20頁(yè)/共65頁(yè)22主調(diào)函數(shù)被調(diào)函數(shù)main(){inta,b;a=15;b=8;Swap(&a,&b);printf("a=%d,b=%d",a,b);}voidSwap(int*x,int*y){inttemp;temp=*x;*x=*y;*y=temp;}&a&a實(shí)參形參&b&bxyab程序2xy15ab8互換第21頁(yè)/共65頁(yè)23指針變量作函數(shù)參數(shù)圖7-2用指針變量作函數(shù)參數(shù)實(shí)現(xiàn)兩數(shù)互換函數(shù)的示意圖1588&a&b&a(a)調(diào)用Swap函數(shù)

a

a

b

*x

*x

*y

y

x

x

&a

&b

main函數(shù)

Swap函數(shù)

temp15&b15(b)執(zhí)行Swap函數(shù)

b

*y

y

temp②①③第22頁(yè)/共65頁(yè)24swap函數(shù)的幾種錯(cuò)誤形式(1/3)參數(shù)單向傳遞voidSwap(intx,inty){

inttemp;temp=x;/*x,y為內(nèi)部變量*/x=y;y=temp;}第23頁(yè)/共65頁(yè)25參數(shù)單向傳遞voidSwap(int*p1,int*p2){

int*p;p=p1;/*p1,p2為內(nèi)部變量*/p1=p2;p2=p;}swap函數(shù)的幾種錯(cuò)誤形式(2/3)第24頁(yè)/共65頁(yè)26指針p沒(méi)有確切地址voidSwap(int*p1,int*p2){

int*p;/*指針p未初始化*/*p=*p1;*p1=*p2;*p2=*p;}swap函數(shù)的幾種錯(cuò)誤形式(3/3)第25頁(yè)/共65頁(yè)27例7.3打印出最高分及其學(xué)號(hào)

#include<stdio.h>#defineSIZE10voidFindMax(floatscore[],longnum[],intn,float

*pMaxScore,long

*pMaxNum)main(){ floatscore[SIZE],maxScore;inti; longnum[SIZE],maxNum; printf("Pleaseenterthenumberandscore:\n"); for(i=0;i<SIZE;i++)

{ scanf("%ld%f",&num[i],&score[i]);

} FindMax(score,num,SIZE,&maxScore,

&maxNum); printf("maxScore=%f,maxNum=%ld\n",maxScore,maxNum);}第26頁(yè)/共65頁(yè)28例7.3打印出最高分及其學(xué)號(hào)voidFindMax(floatscore[],longnum[],intn,float*pMaxScore,long*pMaxNum){ inti; *pMaxScore=score[0]; *pMaxNum=num[0];

for(i=1;i<n;i++) {

if(score[i]>*pMaxScore) {*pMaxScore=score[i];*pMaxNum=num[i]; } }}maxScoremaxNum&maxScorepMaxScore&maxNumpMaxNumscore[0]num[0]第27頁(yè)/共65頁(yè)29§7.2字符串與字符數(shù)組、字符指針字符串一串以'\0'結(jié)尾的字符在C語(yǔ)言中被看作字符串用雙引號(hào)括起的一串字符是字符串常量,C語(yǔ)言自動(dòng)為其添加'\0'終結(jié)符C語(yǔ)言并沒(méi)有為字符串提供任何專門的表示法,完全使用字符數(shù)組和字符指針來(lái)處理字符數(shù)組每個(gè)元素都是字符類型的數(shù)組charstring[100];字符指針指向字符類型的指針Char*p;數(shù)組和指針可以等同看待第28頁(yè)/共65頁(yè)30字符指針變量與字符數(shù)組的區(qū)別定義方法不同

charstr[10];

char*ptr;賦值方法和含義不同

charstr[10];str=”china”;/*錯(cuò)誤*/strcpy(str,”china”);/*正確*/

char*ptr;ptr=”china”;/*正確*/第29頁(yè)/共65頁(yè)31字符指針變量與字符數(shù)組的區(qū)別在定義一個(gè)數(shù)組時(shí),在編譯時(shí)即分配單元,有確定地址,而定義一個(gè)字符指針變量時(shí),如未對(duì)它賦初值,則其所指數(shù)據(jù)是不定的,因而使用是危險(xiǎn)的。

例如,輸入字符串時(shí)

charstr[10];scanf("%s",str);/*正確*/char*a;scanf("%s",a);/*錯(cuò)誤*/

應(yīng)為:

char*a;charstr[10];a=str;scanf("%s",a);/*正確*/第30頁(yè)/共65頁(yè)32字符指針變量與字符數(shù)組的區(qū)別初始化含義不同

char*pstr=”china”;

等價(jià)于

char*pstr;

pstr=”china”;

charstr[14]=”china”;不等價(jià)于

charstr[14];

str=”china”;字符指針是變量,而數(shù)組名是地址常量第31頁(yè)/共65頁(yè)33例7.5字符串拷貝方法1:用字符數(shù)組編程實(shí)現(xiàn)/*函數(shù)功能:字符串拷貝函數(shù)參數(shù):字符型數(shù)組srcStr,存儲(chǔ)源字符串字符型數(shù)組dstStr,存儲(chǔ)目的字符串函數(shù)返回值:無(wú)*/下標(biāo):01234567891011HelloChina\0HelloChina\0from[i]to[i]下標(biāo)移動(dòng)方向to[i]='\0'fromto結(jié)束拷貝ii++i第32頁(yè)/共65頁(yè)34例7.5字符串拷貝方法1:用字符數(shù)組編程實(shí)現(xiàn)voidMyStrcpy(chardstStr[],charsrcStr[]){

inti=0;

while(srcStr[i]!='\0') { dstStr[i]=srcStr[i]; i++; }

dstStr[i]='\0';}第33頁(yè)/共65頁(yè)35方法2:用字符指針編程實(shí)現(xiàn)/*函數(shù)功能:字符串拷貝函數(shù)參數(shù):字符型指針srcStr,指向源字符串字符型指針dstStr,指向目的字符串函數(shù)返回值:無(wú)*/例7.5字符串拷貝HelloChina\0HelloChina\0*from*to指針移動(dòng)方向指針移動(dòng)方向*to='\0'tofrom++fromfromto++to第34頁(yè)/共65頁(yè)36方法2:用字符指針編程實(shí)現(xiàn)

voidMyStrcpy(char*dstStr,constchar*srcStr){

while(*srcStr!='\0') { *dstStr=*srcStr; srcStr++; dstStr++; }

*dstStr='\0';

}例7.5字符串拷貝第35頁(yè)/共65頁(yè)37例7.6計(jì)算實(shí)際字符個(gè)數(shù)方法1:用字符數(shù)組實(shí)現(xiàn)/*函數(shù)功能:計(jì)算字符串的長(zhǎng)度函數(shù)參數(shù):字符型數(shù)組str,存儲(chǔ)字符串函數(shù)返回值:字符串的長(zhǎng)度*/unsignedintMyStrlen(charstr[]){

inti

;

unsignedintlen=0;

for(i=0;str[i]!='\0';i++) { len++; }

return(len);}第36頁(yè)/共65頁(yè)38例7.6計(jì)算實(shí)際字符個(gè)數(shù)方法2:用字符指針實(shí)現(xiàn)/*函數(shù)功能:計(jì)算字符串的長(zhǎng)度函數(shù)參數(shù):字符型指針變量pStr,指向字符串函數(shù)返回值:字符串的長(zhǎng)度*/unsignedintMyStrlen(char*pStr){

unsignedintlen=0;

for(;*pStr!='\0';pStr++) { len++; }

return(len);}第37頁(yè)/共65頁(yè)39§7.3指針與數(shù)組間的關(guān)系指針的算術(shù)運(yùn)算和關(guān)系運(yùn)算常常是針對(duì)數(shù)組元素;表達(dá)式中,數(shù)組名被自動(dòng)轉(zhuǎn)化為指向數(shù)組中第一個(gè)元素的常量指針;數(shù)組的下標(biāo)運(yùn)算符“[]”實(shí)際上就是以一個(gè)指針作為其操作數(shù);(a[i],解釋為*(a+i))數(shù)據(jù)元素可以通過(guò)指針來(lái)引用,指針也可用下標(biāo)形式來(lái)表示。第38頁(yè)/共65頁(yè)40數(shù)組名就是一個(gè)指針只是不能修改這個(gè)指針的指向可以定義函數(shù)的參數(shù)為數(shù)組名指針也可當(dāng)作數(shù)組名使用

int*p,a[10];

p=a;數(shù)組元素的幾種等價(jià)引用形式(1)a[i](2)*(a+i)(3)p[i](4)*(p+i)60006001600260036004600560066007a[0]a[1]a[2]a[3]aa+1a+260006001600260036004600560066007a[0]a[1]a[2]a[3]app++p++指針與一維數(shù)組P+1與P++?第39頁(yè)/共65頁(yè)41輸入輸出數(shù)組的全部元素main(){

inta[10];

inti;

for(i=0;i<10;i++)scanf("%d",&a[i]);

for(i=0;i<10;i++)printf("%d",a[i]);}main(){

inta[10];

int*p,i;

for(p=a;p<(a+10);p++)scanf("%d",p);

for(p=a;p<(a+10);p++)printf("%d",*p);}方法1:下標(biāo)法方法2:指針?lè)ǖ?0頁(yè)/共65頁(yè)42例7.7在一個(gè)已排好序的數(shù)組中插入一個(gè)數(shù)據(jù)x,插入后數(shù)組元素保持排序關(guān)鍵:找到該插入的位置,然后依次移動(dòng)插入位置及其后的所有元素騰出這一位置放入待插入的元素

13579a[0]a[1]a[2]a[3]a[4]a[5]插入位置pos

x=4x插入前:③

①134579x插入后:插入元素xa[0]a[1]a[2]a[3]a[4]a[5]第41頁(yè)/共65頁(yè)43#include<stdio.h>#defineARR_SIZE10voidInsert(inta[],intn,intx);main(){

int

a[ARR_SIZE+1],x,i,n; scanf("%d",&n);/*插入元素前數(shù)組元素的個(gè)數(shù)*/for(i=0;i<n;i++){scanf(“%d”

,&a[i]);/*輸入排好序的元素*/}scanf(“%d”,&x);/*輸入待插元素*/Insert(a,n,x);for(i=0;i<n+1;i++){printf(“%-4d”

,a[i]);}}

第42頁(yè)/共65頁(yè)44voidInseart(inta[],intn,intx){

inti,pos;

for(i=0;(i<n)&&(x>a[i]);i++) { } pos=i;

for(i=n-1;i>=pos;i--) { a[i+1]=a[i];/*向后移動(dòng)*/ } a[pos]=x;/*插入元素x到位置pos*/}例7.7在一個(gè)已排好序的數(shù)組中插入一個(gè)數(shù)據(jù)x,插入后數(shù)組元素保持排序第43頁(yè)/共65頁(yè)45指針變量作為函數(shù)參數(shù)實(shí)現(xiàn)插入#include<stdio.h>#defineARR_SIZE10voidInsert(inta[],intn,intx);main(){

int

a[ARR_SIZE+1],x,i,n; int*P=NULL;

……

p=aInsert(a,n,x);

……}

voidInseart(inta[],intn,intx){

…… }第44頁(yè)/共65頁(yè)46刪除數(shù)組中指定元素32456

刪除x后:插入元素xa[0]a[1]a[2]a[3]a[4]a[5]321456a[0]a[1]a[2]a[3]a[4]a[5]待刪除位置pos

x=1刪除x前:①

③第45頁(yè)/共65頁(yè)47C語(yǔ)言將二維數(shù)組看作一維數(shù)組,其每個(gè)數(shù)組元素又是一個(gè)一維數(shù)組a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]aa[0]+0a+1a[1]+0a[0]+1a[0]+2&a[0][0]&a[1][0]&a[1][1]a[1]+1&a[1][2]&a[0][1]&a[0][2]a[1]+2inta[2][3];指針與二維數(shù)組

a[0][0] a[0] a[0][1] a[0][2] a[1][0] a[1] a[1][1] a[1][2]

a

第46頁(yè)/共65頁(yè)48一維數(shù)組a

a[1]

a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]行地址列地址列地址列地址a[0]+0a[0]+1a[0]+2a[0]+3a[2]+0a[2]+1a[2]+2a[2]+3a[1]+0a[1]+1a[1]+2a[1]+3一維數(shù)組a[2]一維數(shù)組a[1]一維數(shù)組a[0]a[0]

a[2]

a+0&a[0]

a+1&a[1]

a+2&a[2]

指針與二維數(shù)組圖示第47頁(yè)/共65頁(yè)49a代表二維數(shù)組的首地址,第0行的地址a+i代表第i行的地址*(a+i)即a[i]

代表第i行第0列的地址*(a+i)+j即a[i]+j代表第i行第j列的地址*(*(a+i)+j)即a[i][j]代表第i行第j列的元素行地址轉(zhuǎn)變成列地址指針與二維數(shù)組第48頁(yè)/共65頁(yè)50元素a[i][j]的地址的幾種等價(jià)的引用方式&a[i][j]a[i]+j

*(a+i)+j

&(*(a+i))[j]元素a[i][j]的幾種等價(jià)的引用方式a[i][j]*(a[i]+j)

*(*(a+i)+j)

(*(a+i))[j]指針與二維數(shù)組第49頁(yè)/共65頁(yè)51charweekDay[7][10]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};表7-1星期表的內(nèi)容0Sunday1Monday2Tuesday3Wednesday4Thursday5Friday6SaturdayweekDay[0]weekDay[1]weekDay[2]weekDay[3]weekDay[4]weekDay[5]weekDay[6]Sunday\0Monday\0Tuesday\0Wednesday\0Thursday\0Friday\0Saturday\0例7.8任意輸入英文的星期幾,在查找星期表后輸出其對(duì)應(yīng)的數(shù)字。

第50頁(yè)/共65頁(yè)52#include<string.h>main(){

inti,pos;

int

findFlag=0;

charx[10];

charweekDay[][10]={"Sunday","Monday","Tuesday", "Wednesday","Thursday","Friday","Saturday"}; printf("Pleaseenterastring:"); scanf("%s",x);

for(i=0;i<7&&!findFlag;i++) {

if(strcmp(x,weekDay[i])==0) { pos=i; findFlag=1; } }

if(findFlag) printf("%sis%d\n",x,pos);

else printf("Notfound!\n");}例7.8第51頁(yè)/共65頁(yè)53二維數(shù)組的指針——行指針定義的一般格式:類型關(guān)鍵字(*P)[常量N]int(*p)[3];p=a;//用行地址初始化

for(i=0;i<m;i++)

for(j=0;j<n;j++) printf("%d",*(*(p+i)+j));a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]pp++利用行列指針引用二維數(shù)組元素第52頁(yè)/共65頁(yè)54二維數(shù)組的指針——列指針int*p;p=*a;//用列地址初始化相對(duì)于數(shù)組起始地址的偏移量i*n+jfor(i=0;i<m;i++)

for(j=0;j<n;j++) printf("%d",*(p+i*n+j));a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]pp++利用行列指針引用二維數(shù)組元素第53頁(yè)/共65頁(yè)55例7.9編寫一個(gè)計(jì)算任意m行n列二維數(shù)組中元素的最大值,并指出其所在的行、列下標(biāo)值的函數(shù)。659787927692919094706580第54頁(yè)/共65頁(yè)56intFindMax(int*p,intm,intn,int*pRow,int*pCol){

inti,j,max; max=p[0]; *pRow=0; *pCol=0;

for(i=0;i<m;i++)

{

for(j=0;j<n;j++)

{

if(p[i*n+j]>max){ max=p[i*n+j]; *pRow=i; *pCol=j;} } }

return(max);}例7.9第55頁(yè)/共65頁(yè)57§7.4指針數(shù)組元素均為指針類型數(shù)據(jù)的數(shù)組,稱為指針數(shù)組

定義形式為:

類型關(guān)鍵字*數(shù)組名[數(shù)組長(zhǎng)度];例如

char*pStr[5];初始化char*pstr[]={"aa","bbb","cccccccc"};第56頁(yè)/共65頁(yè)58例7.10字符串按字典順序排序方法1:用二維數(shù)組來(lái)實(shí)現(xiàn)char

str[N][10]={"Pascal","Basic","Fortran","Java","VisualC"};

for(i=0;i<N-1;i++) {

for(j=i+1;j<N;j++) {

if(strcmp(str[j],str[i])<0)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論