freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c語言程序設(shè)計教程(三)ppt-文庫吧

2025-09-17 16:02 本頁面


【正文】 、減運算 ? 設(shè) p是指向某一數(shù)組元素的指針,開始時指向數(shù)組的第 0號元素,設(shè) n為一整數(shù),則 p+n就表示指向數(shù)組的第 n號元素 (即下標(biāo)為 n的元素 )。不論指針變量指向何種數(shù)據(jù)類型,指針和整數(shù)進行加、減運算時,編譯程序總根據(jù)所指對象的數(shù)據(jù)長度對 n進行放大,在一般微機上, char放大因子為 1, int、 short放大因子為 2, long和float放大因子為 4, double放大因子為 8。對于下面章節(jié)所講述到的結(jié)構(gòu)或共用體,也仍然遵守這一原則。 地址運算 (續(xù) ) ? (3). 兩個指針變量在一定條件下可進行減法運算 ? 設(shè) p, q指向同一數(shù)組,則 pq的絕對值表示 p所指對象與 q所指對象之間的元素個數(shù)。其相減的結(jié)果遵守對象類型的字節(jié)長度進行縮小的規(guī)則。 ? 注意:不同數(shù)據(jù)類型指針之間、指針與一般常數(shù)之間的關(guān)系運算是沒有意義的。但是指針和零之間的相等與不相等運算可用于判斷指針是否為空指針。 ? 如判斷指針 p是否為空指針,可用 p==0或 p!=0來判斷,也可以用 p==NULL或 p!=NULL來判斷。 ? 例 84 指針的應(yīng)用 ——地址運算。 ? include 地址運算 (續(xù) ) ? void main() ? { ? int iArray[10]。 ? int *iPoint1,*iPoint2。 ? int iNumber。 ? printf(數(shù)組 iArray的初始化值: )。 ? for(int i=0。i10。i++) ? { ? iArray[i]=i。 ? if((i%5)==0) ? printf(\n)。 ? printf(iArray[%d]=%d\t,i,iArray[i])。 ? } ? printf(\n)。 ? iPoint1=amp。iArray[0]。 ? iPoint2=amp。iArray[5]。 ? iNumber=3。 地址運算 (續(xù) ) ? /* 指針比較運算: */ ? printf(指針比較運算: \n)。 ? printf(iPoint1=%d\tiPoint2=%d\n,iPoint1,iPoint2)。 ? printf(iPoint1=%d\tiPoint2=%d\n,*iPoint1,*iPoint2)。 ? if(iPoint1iPoint2) ? printf(iPoint1iPoint2\n)。 ? else if(iPoint1iPoint2) ? printf(iPoint1iPoint2\n)。 ? else ? printf(iPoint1==iPoint2\n)。 ? printf(\n)。 ? /* 指針與整數(shù)相加運算: */ ? printf(指針與整數(shù)相加運算: \n)。 ? printf(iPoint1=%d\tiPoint2=%d\tiNumber=%d\n,iPoint1,iPoint2,iNumber)。 ? printf(iPoint1=%d\tiPoint2=%d\tiNumber=%d\n,*iPoint1,*iPoint2,iNumber)。 地址運算 (續(xù) ) ? iPoint1=iPoint1+iNumber。 ? iPoint2=iPoint2+iNumber。 ? printf(iPoint1=iPoint1+iNumber=iPoint1=%d\n,iPoint1)。 ? printf(iPoint1=iPoint1+iNumber=iPoint1=%d\n,*iPoint1)。 ? printf(iPoint2=iPoint2+iNumber=iPoint2=%d\n,iPoint2)。 ? printf(iPoint2=iPoint2+iNumber=iPoint2=%d\n,*iPoint2)。 ? printf(\n)。 ? /*指針減法運算: */ ? printf(指針減法運算: \n) 。 ? iNumber=iPoint1iPoint2。 ? printf(iPoint1=%d\tiPoint2=%d\n,iPoint1,iPoint2)。 ? printf(iNumber=iPoint1iPoint2=iNumber=%d\n,iNumber)。 ? printf(\n)。 ? } 地址運算 (續(xù) ) ? 運行結(jié)果: ? 數(shù)組 iArray的初始化值: ? iArray[0]=0 iArray[1]=1 iArray[2]=2 iArray[3]=3 iArray[4]=4 ? iArray[5]=5 iArray[6]=6 iArray[7]=7 iArray[8]=8 iArray[9]=9 ? 指針比較運算: ? iPoint1=1310552 iPoint2=1310572 ? iPoint1=0 iPoint2=5 ? iPoint1iPoint2 ? 指針與整數(shù)相加運算: ? iPoint1=1310552 iPoint2=1310572 iNumber=3 ? iPoint1=0 iPoint2=5 iNumber=3 ? iPoint1=iPoint1+iNumber=iPoint1=1310564 ? iPoint1=iPoint1+iNumber=iPoint1=3 ? iPoint2=iPoint2+iNumber=iPoint2=1310584 ? iPoint2=iPoint2+iNumber=iPoint2=8 ? 指針減法運算: ? iPoint1=1310564 iPoint2=1310584 ? iNumber=iPoint1iPoint2=iNumber=5 指向數(shù)組元素的指針 ? 例 85 數(shù)組元素的等價引用。 ? include ? void main() ? { ? int *iPoint。 ? int iNum[5]。 ? iPoint=iNum。 /* 建立指針和數(shù)組關(guān)聯(lián)*/ ? for(int i=0。i5。i++) ? *(iPoint+i)=i+1。 /* 用指針地址法引用數(shù)組元素 */ ? for(i=0。i5。i++) ? printf(iNum[%d]=%d\t,i,iNum[i])。 /* 用下標(biāo)法引用數(shù)組元素 */ ? printf(\n)。 ? } ? 運行結(jié)果: ? iNum[0]=1 iNum[1]=2 iNum[2]=3 iNum[3]=4 iNum[4]=5 指向數(shù)組元素的指針 (續(xù) ) ? 下面我們通過上例來詳細(xì)說明指針與數(shù)組的關(guān)系。 ? 首先聲明一個整型數(shù)組和一個指向整型的指針變量: ? int *iPoint。 ? int iNum[5。 ? 和前面介紹過的方法相同,可以使整型指針 iPoint指向數(shù)組中的任何一個元素,假定給出賦值運算: ? iPoint=amp。iNum[0]。 ? 此時, iPoint指向數(shù)組中的第 0號元素,即 iNum[0],指針變量 iPoint中包含了數(shù)組元素 iNum[0]的地址,由于數(shù)組元素在內(nèi)存中是連續(xù)存放的,因此,我們就可以通過指針變量 iPoint及其相關(guān)運算間接訪問數(shù)組中的任意一個元素。 ? 在 C語言中,數(shù)組名是數(shù)組的第 0號元素的地址,因此下面兩個語句是等價的。 ? iPoint=amp。iNum[0]。 ? iPoint=iNum。 指向數(shù)組元素的指針 (續(xù) ) ? 這里我們用第二種方法建立指針 iPoint與數(shù)組 iNum的關(guān)聯(lián)。由上例結(jié)果我們知道,當(dāng)指針與數(shù)組建立關(guān)聯(lián)以后,對指針的操作就是對關(guān)聯(lián)數(shù)組的操作。 ? 下面我們用指針給出數(shù)組元素的地址和內(nèi)容的幾種表示形式: ? (1). 根據(jù)地址運算規(guī)則, arry+1為 arry[1]的地址, arry+i就為arry[i]的地址。同理, p+i和 arry+i均表示 arry[i]的地址?;蛘哒f,它們均指向數(shù)組第 i號元素,即指向 arry[i]。 ? (2). *(p+i)和 *(arry+i)都表示 p+i和 arry+i所指對象的內(nèi)容,即為 arry[i]。 ? (3). 指向數(shù)組元素的指針,也可以表示成數(shù)組的形式,也就是說,它允許指針變量帶下標(biāo),如 p[i]與 *(p+i)等價。假若: ? p=arry+5。 ? 則 p[2]就相當(dāng)于 *(p+2),由于 p指向 arry[5],所以 p[2]就相當(dāng)于arry[7]。而 p[3]就相當(dāng)于 *(p3),它表示 arry[2]。 指向數(shù)組元素的指針 (續(xù) ) ? 例 86 輸入 10個數(shù),存入 data數(shù)組,求出這 10個數(shù)據(jù)的最大值和最小值。 ? include ? void main() ? { ? float *fPoint,*fPend。 ? float fData[10]。 ? float fMax,fMin。 ? fPoint=fData。 /* 建立指針和數(shù)組的關(guān)聯(lián) */ ? fPend=fData。 ? printf(Enter 10 number:\n)。 ? for(int i=0。i10。i++) ? scanf(%f,fPend++)。 ? /* fPend++結(jié)果為地址,依次指向各個數(shù)組元素 */ ? /* 循環(huán)結(jié)束后, fPend指向數(shù)組末尾元素 fData[9]之后 */ ? fMax=*fData。 /* 先假定 fData[0]為最大值和最小值 */ ? fMin=*fData。 指向數(shù)組元素的指針 (續(xù) ) ? /* 循環(huán)中, fPoint的指向從 fData[1]直至 fData[9]*/ ? for(fPoint=fData+1。fPointfPend。fPoint++) ? if(*fPointfMax) ? fMax=*fPoint。 ? else if(*fPointfMin) ? fMin=*fPoint。 ? printf(Max=%f\tMin=%f\n,fMax,fMin)。 ? } ? 運行結(jié)果: ? Enter 10 number: ? 4 ↙ ? Max = Min = 指向數(shù)組元素的指針 (續(xù) ) ? 例 87 求數(shù)組平均值(用形實結(jié)合傳送數(shù)組首地址方式傳送數(shù)組數(shù)據(jù))。 ? include ? define N 5 ? float mean(int *data,int n) /* 形參 data為指針變量 */ ? { ? float aver=。 ? for(int i=0。in。i++,data++) /* 求和 */ ? aver+=*data。 ? aver/=n。 /* 求平均值 */ ? return aver。 /* 返回平均值 */ ? } 指向數(shù)組元素的指針 (續(xù) ) ? void main() ? { ? int a[N]。 ? float av。 ? printf(輸入數(shù)組元素: \n)。 ? for(int i=0。iN。i++) /* 輸入數(shù)組元素值 */ ? scanf(%d,amp。a[i])。 ? av=mean(a,N)。 ? /* 調(diào)用 mean()函數(shù),數(shù)組名 a為實參,與形參 data對應(yīng) */ ? printf(Mean: %f\n,av)。 /*輸出結(jié)果 */ ? } ? 運行結(jié)果: ? 輸入數(shù)組元素: ? 15 ↙ ? Mean: 指向數(shù)組元素的指針 (續(xù) ) ? 在例 87中,用形實結(jié)合傳送地址的方式將數(shù)組名 a作為實參傳遞給形參 data,使指針變量data指向數(shù)組 a的首地址,這樣,被調(diào)函數(shù)mean()中 *data的操作實際上就是對調(diào)用函數(shù)中的 a數(shù)組元素操作。通常數(shù)組含有眾多元素,不可能將他們一并作為數(shù)組傳送給被調(diào)函數(shù)。只有采取傳送數(shù)組首地址的方式,使得被調(diào)函數(shù)和調(diào)用函數(shù)都能對同一數(shù)組數(shù)據(jù)空間操作,這樣就解決了大批量數(shù)據(jù)在函數(shù)調(diào)用時互相傳遞的問題。 指向數(shù)組元素的指針 (續(xù) ) ? 例 88 求已知數(shù)組中的最大值元素,并將它移到該數(shù)組最前面,其余元素順序后移(用形實結(jié)合傳送數(shù)組首地址方式傳送數(shù)組數(shù)據(jù))。 ? include ? define N 5 ? int MaxData(int iData[],int iPosition)。 ? int MoveData(int *iData ,int iPosition)。 ? void main() ? { ? int a[N],m。 ? printf(移動前數(shù)組元素: )。 指向數(shù)組元素的指針 (續(xù) ) ? for(int i=0。iN。i++) /* 輸入數(shù)組 */ ? { ? a[i]=
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1