指針及引用復(fù)習(xí)6市公開(kāi)課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第1頁(yè)
指針及引用復(fù)習(xí)6市公開(kāi)課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第2頁(yè)
指針及引用復(fù)習(xí)6市公開(kāi)課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第3頁(yè)
指針及引用復(fù)習(xí)6市公開(kāi)課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第4頁(yè)
指針及引用復(fù)習(xí)6市公開(kāi)課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第5頁(yè)
已閱讀5頁(yè),還剩44頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

指針及應(yīng)用

C語(yǔ)言程序設(shè)計(jì)綜合復(fù)習(xí)(6)第1頁(yè)P(yáng)roject(項(xiàng)目)程序軟件大型軟件開(kāi)發(fā)需要團(tuán)體協(xié)作,花費(fèi)很多時(shí)間完成。在有限時(shí)間里,個(gè)人只能完成小型軟件開(kāi)發(fā)程序設(shè)計(jì)VS.軟件開(kāi)發(fā)第2頁(yè)Software(軟件)for(k=0;k<=2;k++){for(i=0;i<nDim;i++)pY[i]=pE[i]+pA[k]*pD[i];pB[i]=pB[i]+pA[k+1]*pD[i]/3.0;}tt=t+pA[k];Function(tt,pY,pD);}

for(k=0;k<=2;k++){for(i=0;i<nDim;i++)pY[i]=pE[i]+pA[k]*pD[i];pB[i]=pB[i]+pA[k+1]*pD[i]/3.0;}tt=t+pA[k];Function(tt,pY,pD);}

可執(zhí)行程序(exe)

僅包含一個(gè)main()函數(shù)源程序文件源程序文件軟件模塊可執(zhí)行程序(exe)

可執(zhí)行程序(exe)

可執(zhí)行程序(exe)

軟件第3頁(yè)Questionfor(k=0;k<=2;k++){for(i=0;i<nDim;i++)pY[i]=pE[i]+pA[k]*pD[i];pB[i]=pB[i]+pA[k+1]*pD[i]/3.0;}tt=t+pA[k];Function(tt,pY,pD);}

for(k=0;k<=2;k++){for(i=0;i<nDim;i++)pY[i]=pE[i]+pA[k]*pD[i];pB[i]=pB[i]+pA[k+1]*pD[i]/3.0;}tt=t+pA[k];Function(tt,pY,pD);}

可執(zhí)行程序(exe)

僅包含一個(gè)main()函數(shù)源程序文件源程序文件軟件模塊第4頁(yè)指針第5頁(yè)指針三部曲取址類(lèi)型申明引用第6頁(yè)題1分析程序功效是什么?voidmain(){charstt[]={“ab123$GPRMC*”};inti;char*p;p=stt;for(i=0;*(p+i)!=‘M’;i++);printf(“%d%c”,++i,*(p+i));}第7頁(yè)這個(gè)程序ppt拷貝到VC++不能用#include“stdafx.h”voidmain(){charstt[]={“ab123$GPRMC*”};inti;char*p;p=stt;for(i=0;*(p+i)!=‘M’;i++);printf(“%d%c”,++i,*(p+i));}編譯用32個(gè)錯(cuò)誤第8頁(yè)這個(gè)程序拷貝到VC++能用.為何?

#include"stdafx.h"voidmain(){charstt[]={"ab123$GPRMC*"};inti;char*p;p=stt;for(i=0;*(p+i)!='M';i++);printf("%d%c",++i,*(p+i));}注意雙引號(hào)和單引號(hào)第9頁(yè)題2分析程序功效是什么?

voidmain()//gps_7.c{charstt[]={“ab123$GPRMC*”};inti;charstrgps[8];char*P,*pt;p=stt;pt=p+5;for(i=0;i<5;i++)strgps[i]=*(pt+i);printf(“%s”,strgps);}第10頁(yè)題3分析程序功效是什么?

voidmain()//gps_8.c{charstt[]={“ab123$GPRMC*”};inti;charstrgps[8];char*P,;p=stt;for(i=0;i<6;i++)strgps[i]=*(pt+5+i);//從第5位(第一位為0位)printf(“%s”,strgps);}第11頁(yè)#include<stdlib.h>voidmain()//ma.c{

char*p,i;

printf(“input8numbers:”);

p=(char*)malloc(8*sizeof(char));for(i=0;i<8;i++)

scanf(“%d”,p+i);

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

printf(“%d”,*(p+i));

}題4分析程序功效是什么?第12頁(yè)題5分析程序功效是什么?structpoint//str5.c{charname[20];Intx;floaty;};voidmain(){structpointpo1;scanf(%s%d%f”,,&po1.x,&po1.y);Printf(“%s%d%f”,,po1.x,po1.y);}第13頁(yè)參數(shù)傳遞第四個(gè)方法----引用傳遞當(dāng)一個(gè)函數(shù)調(diào)用另一個(gè)函數(shù)時(shí),函數(shù)之間數(shù)據(jù)傳遞方式有三種:值拷貝地址拷貝全局函數(shù)函數(shù)參數(shù)引用傳遞方法,是經(jīng)過(guò)在函數(shù)原型參數(shù)表中參數(shù)名前面加“&”運(yùn)算符來(lái)完成。引用調(diào)用結(jié)果,將影響對(duì)象(變量)本身值。第14頁(yè)參數(shù)傳遞----引用實(shí)例1

#include"stdio.h"structxyz{ intx; inty; intz;};intsum(structxyz&x1)//&去掉就是普通值傳遞{ints;s=x1.x+x1.y+x1.z;returns;}voidmain(){ structxyzxx={2,3,1}; printf("%d\n",sum(xx));}第15頁(yè)參數(shù)傳遞----引用實(shí)例2

#include"stdio.h"structxyz{ intx; inty; intz;};intsum(xyz&xx)//struct去掉x1改xx也可(不是自引用){ints;//xx和xx沒(méi)相關(guān)系s=xx.x+xx.y+xx.z;returns;}voidmain(){

structxyzxx={2,3,1};//struct也可去掉 printf("%d\n",sum(xx));}第16頁(yè)

參數(shù)傳遞----引用實(shí)例3(與例2有區(qū)分嗎?)

#include"stdio.h"classxyz{public: intx; inty; intz;};intsum(xyz&xx){ints;s=xx.x+xx.y+xx.z;returns;}voidmain(){ xyzxx={2,3,1}; printf("%d\n",sum(xx));}第17頁(yè)匿名指針應(yīng)用(8155訪問(wèn))程序以下:#include<reg51.h>//8155_ok.c#include<absacc.h>#include<stdio.h>#defineP8155COM(*(volatileunsignedcharxdata*)0x2100)#defineP8155B(*(volatileunsignedcharxdata*)0x2102)voiddelay();voidmain(void){P8155COM=0x02;while(1){delay();P8155B=0xff;delay();P8155B=~0xff;}}第18頁(yè)單步調(diào)試#include<stdio.h>intsum(int*p){ inti,summ=0;for(i=0;i<5;i++)summ+=(*(p+i));returnsumm;}voidmain(){ inta[]={1,2,3,4,5}; int*p=a;printf("%d",sum(a));}//15第19頁(yè)題6編程使用函數(shù)調(diào)用,求鍵盤(pán)輸入三個(gè)整數(shù)之積。

第20頁(yè)題7編程輸入10個(gè)同學(xué)姓名,數(shù)學(xué)成績(jī),英語(yǔ)成績(jī),物理成績(jī)。確定總分最低同學(xué),并打印姓名及其三門(mén)課程成績(jī):

參考下面程序#include"stdio.h“//str_2.cstructStudent /*定義結(jié)構(gòu)體structStudent*/{charName[20]; /*姓名*/floatMath; /*數(shù)學(xué)*/floatEnglish; /*英語(yǔ)*/floatPhysical; /*物理*/};第21頁(yè)Examplesvoidmain(){structStudentoStu;structStudentoMaxStu;inti;floatfMaxScore;floatfTotal;printf("\nPleaseinput10studentsandthemscore\n");/*提醒信息*/printf("----------------------------------------\n");printf("NameMathEnglishPhysical\n");printf("----------------------------------------\n");fMaxScore=0;第22頁(yè)Examplesfor(i=0;i<10;i++){ scanf("%s%f%f%f“,oStu.Name,&oStu.Math,&oStu.English,&oStu.Physical);; fTotal=oStu.Math+oStu.English+oStu.Physical; if(fMaxScore<fTotal) { strcpy(oMaxStu.Name,oStu.Name); oMaxStu.Math=oStu.Math; oMaxStu.English=oStu.English; oMaxStu.Physical=oStu.Physical;fMaxScore=fTotal }}第23頁(yè)Examplesprintf("----------------------------------------\n");print("%s%f%f%f",oMaxStu.Name,oMaxStu.Math,oMaxStu.English,oMaxStu.Physical);}第24頁(yè)例譯電瑪#include”stdio.h”#definemax100#definechange1voidmain(){charstr[max]inti;printf(“enter:\n);scanf(“%s”,str);#if(change)

{第25頁(yè)例2:同上

for(i=0,i<max;i+++){if(str[i]!=\0’)if(str[i]>=‘a(chǎn)’&&str[i]<‘z’||str[i]>=‘A’&&str[i]<‘Z’)str[i]+=1;elseif(str[i])==“z’||str[i]==‘Z’)str[i]-=25;

}

}#endifprintf(%s”,str);}

第26頁(yè)例2:同上voidmain(){charstt[]={“ab123$GPRMC*”};inti;char*p;p=stt;for(i=0;*p!=0x24;p++,i++);printf(“%d%c”,++i,*p);}第27頁(yè)例5:淘汰已經(jīng)有字符串,遇’*”結(jié)束

voidmain()//gps_9.c{charstt[]={“ab123$GPRMC567*”};inti;charstrgps[12];char*P,*pt;p=stt;pt=p+5;for(i=0;*(pt+i)!=‘*’;i++)strgps[i]=*(pt+i);strgps[i]=‘\0’;printf(“%s”,strgps);}第28頁(yè)例6(簡(jiǎn)之):淘汰已知長(zhǎng)度字符串,遇’*”結(jié)束

voidmain()//gps_10.c{charstt[]={“ab123$GPRMC567*”};inti;charstrgps[12];char*P;p=stt;

for(i=0;*(p+5+i)!=‘*’;i++)strgps[i]=*(p+5+i);strgps[i]=‘\0’;printf(“%s”,strgps);}第29頁(yè)例7:未知字符串長(zhǎng)度,截取從’$”開(kāi)始遇’*”結(jié)束

voidmain()//gps_11.c{charstt[]={“ab123$GPRMC567*”};inti,j;charstrgps[12];char*P;p=stt;for(i=0;*(p+i)!=‘$’;i++)//用i計(jì)一下’$’在第幾位;;for(j=0;*(p+i+j)!=‘*’,j++)strgps[j]=*(p+j+i);strgps[j]=‘\0’;printf(“%s”,strgps);}第30頁(yè)例8:(清析)未知字符串長(zhǎng)度,截取從’$”開(kāi)始遇’*”結(jié)束

voidmain()//gps_12.c{charstt[]={“ab123$GPRMC567*”};inti,j;charstrgps[12];char*P,*pt;p=stt;for(i=0;*(p+i)!=‘$’;i++)//用i計(jì)一下’$’在第幾位;;pt=p+i;for(j=0;*(pt+j)!=‘*’,j++)strgps[j]=*(pt+j);strgps[j]=‘\0’;printf(“%s”,strgps);}第31頁(yè)舉例:

malloc.c

#include<syslib.h>

#include<malloc.h>

main()

{

char*p;

clrscr();

//clearscreen

p=(char*)malloc(100);

if(p)

printf("MemoryAllocatedat:%x",p);

else

printf("NotEnoughMemory!\n");

free(p);

//getchar();

return0;

}

第32頁(yè)例4:同上簡(jiǎn)之(截取”$GPRMC”)

voidmain()//gps_8.c{charstt[]={“ab123$GPRMC*”};inti;charstrgps[8];char*P,;p=stt;for(i=0;i<6;i++)//截取”$GPRMC”共6位strgps[i]=*(pt+5+i);//從第5位(第一位為0位)printf(“%s”,strgps);}第33頁(yè)舉例:

malloc.c

#include<syslib.h>

#include<malloc.h>

main()

{

char*p;

clrscr();

//clearscreen

p=(char*)malloc(100);

if(p)

printf("MemoryAllocatedat:%x",p);

else

printf("NotEnoughMemory!\n");

free(p);

//getchar();

return0;

}

第34頁(yè)例:structpoint//str5.c{charname[20];Intx;floaty;};voidmain(){structpointpo1;scanf(%s%d%f”,,&po1.x,&po1.y);Printf(“%s%d%f”,,po1.x,po1.y);}第35頁(yè)#include<stdlib.h>voidmain()//ma_1.c{

int*p,i;

printf(“input3numbers:");

p=(int*)malloc(3*sizeof(int));for(i=0;i<3;i++)

scanf("%d",p+i);

free(p);for(i=0;i<3;i++)

printf(“%d”,*(p+i));}編寫(xiě)程序:接上題:用free()釋放內(nèi)存,然后輸出原來(lái)三個(gè)數(shù)?

第36頁(yè)calloc函數(shù)

第37頁(yè)calloc()函數(shù)原型:

void*calloc(n,size);void型指針表示該地址并未指明存放何種類(lèi)型數(shù)據(jù),詳細(xì)使用時(shí).再經(jīng)過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換成某種類(lèi)型數(shù)據(jù).使用方法:#include<calloc.h>

或#include<stdlib.h>

功效:按數(shù)據(jù)對(duì)象個(gè)數(shù)分配內(nèi)存.參數(shù)n和size都是unsignedint型.說(shuō)明:假如分配成功則返回指向被分配內(nèi)存首地址(指針),不然返回空指針NULL。

當(dāng)內(nèi)存不再使用時(shí),應(yīng)使用free()函數(shù)將內(nèi)存塊釋放。

calloc語(yǔ)法是:指針名=(數(shù)據(jù)類(lèi)型*)calloc(n,size)

(數(shù)據(jù)類(lèi)型*)表示指針.第38頁(yè)calloc()函數(shù)(例)申請(qǐng)500個(gè)float型數(shù)據(jù)動(dòng)態(tài)內(nèi)存.可使用以下程序段:float*p;p=(float*)calloc(500,sizeof(float));if(p==null)exit(1);//不成功返回操作系統(tǒng)第39頁(yè)例3:淘汰已經(jīng)有字符串,生成一新字符串

voidmain()//gps_7.c{charstt[]={“ab123$GPRMC*”};inti;charstrgps[8];char*P,*pt;p=stt;pt=p+5;for(i=0;i<5;i++)strgps[i]=*(pt+i);printf(“%s”,strgps);}第40頁(yè)下面程序是利用動(dòng)態(tài)內(nèi)存分配存放n個(gè)整數(shù)一維數(shù)組,n值在程序中指定.由鍵盤(pán)輸入n個(gè)整數(shù)存放在該數(shù)組中,并計(jì)算各元素平方和.#include<stdlib.h>//ca.c#include<stdio.h>voidmain()

{

intn,s,i,*p;printf(“enterdimensionofarray:”;

scanf(“%d”,&n);if((p=(int*)calloc(n.sizeof(int)))=NULL){printf(“notmemory.\n”);

exit(1);}printf(“enter%dvaluesofarray:\n”,n);for(i=p;i<n;i++)scanf(“%d”,p+i);s=0;for(i=0;i<n;i++)s=s+*(p+i)*(*(p+i));printf(“%d\n,s);free(p);};第41頁(yè)用malloc()函數(shù)更加好還是用calloc()函數(shù)更加好

函數(shù)malloc()和calloc()都能夠用來(lái)動(dòng)態(tài)分配內(nèi)存空間,但二者稍有區(qū)分。

malloc()函數(shù)有一個(gè)參數(shù),即要分配內(nèi)存空間大小:

void*malloc(size_tsize);

calloc()函數(shù)有兩個(gè)參數(shù),分別為元素?cái)?shù)目和每個(gè)元素大小,這兩個(gè)參數(shù)乘積就是要分配內(nèi)存空間大小。

void*calloc(size_tnumElements,size_tsizeOfElement);

假如調(diào)用成功,函數(shù)malloc()和函數(shù)calloc()都將返回所分配內(nèi)存空間首地址。

第42頁(yè)malloc()函數(shù)

函數(shù)malloc()和函數(shù)calloc()主要區(qū)分是前者不能初始化所分配內(nèi)存空間,而后者能。假如由malloc()函數(shù)分配內(nèi)存空間原來(lái)沒(méi)有被使用過(guò),則其中每一位可能都是0;反之,假如這部分內(nèi)存曾經(jīng)被分配過(guò),則其中可能遺留有各種各樣數(shù)據(jù)。也就是說(shuō),使用malloc()函數(shù)程序開(kāi)始時(shí)(內(nèi)存空間還沒(méi)有被重新分配)能正常進(jìn)行,但經(jīng)過(guò)一段時(shí)間(內(nèi)存空間還已經(jīng)被重新分配)可能會(huì)出現(xiàn)問(wèn)題。第43頁(yè)

calloc()

函數(shù)calloc()

會(huì)將所分配內(nèi)存空間中每一位都初始化為零,也就是說(shuō),假如你是為字符類(lèi)型或整數(shù)類(lèi)型元素分配內(nèi)存,那麼這些元素將確

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論