




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
一周情況說明作業(yè)最近兩周密集批改學(xué)到循環(huán)為止,應(yīng)該對(duì)基本語法和知識(shí)點(diǎn)熟悉,有解題的手感和預(yù)感學(xué)完函數(shù),能初步規(guī)劃出程序的結(jié)構(gòu),擅長(zhǎng)使用函數(shù)優(yōu)化程序架構(gòu),降低解題難度從數(shù)組開始,務(wù)必把數(shù)組、字符串和指針全部基礎(chǔ)知識(shí)和基本應(yīng)用掌握。這是后續(xù)課程要求必須熟練掌握的2023/7/21重慶郵電大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院馮瀟fengxiao@變量的作用域和生存周期2023/7/212函數(shù)的定義和函數(shù)的調(diào)用函數(shù)定義格式:返回值類型函數(shù)名(類型參數(shù)1,類型參數(shù)2,…){函數(shù)體
return表達(dá)式;}函數(shù)調(diào)用格式:函數(shù)名(參數(shù)1,參數(shù)2,…);函數(shù)定義的語法遠(yuǎn)比函數(shù)調(diào)用的要嚴(yán)格很多2023/7/21函數(shù)原型函數(shù)和變量一樣,要先定義后使用如果函數(shù)調(diào)用出現(xiàn)在函數(shù)定義之前,必須使用函數(shù)原型說明該函數(shù)有幾個(gè)參數(shù),參數(shù)的類型,和返回值的類型,才能保證編譯器正常完成工作示例doubleadd(double,double);intmain(){……
add(a,b);}doubleadd(double
x,doubley){……}2023/7/21對(duì)函數(shù)接口加以注釋說明/*函數(shù)功能:實(shí)現(xiàn)××××功能函數(shù)參數(shù):參數(shù)1,表示×××××參數(shù)2,表示×××××
函數(shù)返回值:×××××*/返回值類型函數(shù)名(參數(shù)表){
函數(shù)體
return
表達(dá)式;}2023/7/21主要內(nèi)容變量的作用域和生存周期函數(shù)的嵌套調(diào)用2023/7/21重點(diǎn)&難點(diǎn)變量的作用域和生存周期重點(diǎn)、難點(diǎn)2023/7/21#include<stdio.h>voidmain(){
inta=3,b=5,temp;
printf("before
swap,a=%d,b=%d",a,b);temp=a;a=b;b=temp;
printf("after
swap,a=%d,b=%d",a,b);}比較兩程序2023/7/21#include<stdio.h>voidswap(int
a,intb){
inttemp;temp=a;a=b;b=temp;}voidmain(){
inta=3,b=5,temp;
printf("before
swap,a=%d,b=%d",a,b);
swap(a,b);
printf("after
swap,a=%d,b=%d",a,b);}swap(a,b)main()swap()5a3b5x3yt535……2023/7/21變量的作用域#include<stdio.h>voidmain(){
int
a=1; {
int
a=2;
printf("IntheINNERblock,a=%d\n",a); }
printf("IntheOUTERblock,a=%d\n",a)}語句塊(Block)2023/7/21#include<stdio.h>voidmain(){
inta; {
intb; {
intc; a=0;b=0;c=0;d=0; } a=0;b=0;c=0;d=0; } {
intd; a=0;b=0;c=0;d=0; } a=0;b=0;c=0;d=0;}2023/7/21說明被大括號(hào)括起來的區(qū)域,叫做語句塊(Block)函數(shù)體、循環(huán)體、分支結(jié)構(gòu)都可以看作語句塊變量的作用域規(guī)則是:每個(gè)變量?jī)H在定義它的語句塊內(nèi)(包含下級(jí)語句塊)內(nèi)有效,并擁有自己的內(nèi)存空間同一語句塊內(nèi)不可以定義同名變量,不同語句塊內(nèi)可以定義同名變量變量的作用是表征變量的作用范圍,屬于空間概念按照變量的作用域,變量可以分為全局變量和局部變量2023/7/21#include<stdio.h>inta=3,b=5;//定義全局變量voidswap(){
inttemp;temp=a;a=b;b=temp;}voidmain(){
printf("before
swap,a=%d,b=%d",a,b);
swap(a,b);
printf("after
swap,a=%d,b=%d",a,b);}2023/7/21#include<stdio.h>externint
a,b;voidswap(){
inttemp;temp=a;a=b;b=temp;}voidmain(){
printf("before
swap,a=%d,b=%d",a,b);
swap(a,b);
printf("after
swap,a=%d,b=%d",a,b);}inta=3,b=5;//定義全局變量2023/7/21局部變量局部變量在語句塊內(nèi)定義的變量形參也是局部變量特點(diǎn)進(jìn)入語句塊時(shí)獲得內(nèi)存,僅能由語句塊內(nèi)語句訪問,退出語句塊時(shí)釋放內(nèi)存,不再有效定義時(shí)不會(huì)自動(dòng)初始化,除非程序員指定初值并列語句塊各自定義的同名變量互不干擾2023/7/21全局變量全局變量在所有函數(shù)之外定義的變量特點(diǎn)在程序中從定義它的位置以后都有效在定義點(diǎn)之前或在其他文件中引用,應(yīng)該進(jìn)行如下聲明:extern類型名變量名;從程序運(yùn)行起即占據(jù)內(nèi)存,程序運(yùn)行過程中可隨時(shí)訪問,程序退出時(shí)釋放內(nèi)存使函數(shù)之間的數(shù)據(jù)交換更容易,也更高效但是并不推薦使用,盡量少用因?yàn)檎l都可以改寫全局變量,所以很難確定是誰改寫了它2023/7/21#include<stdio.h>intglobal; /*定義全局變量*/void
GlobalPlusPlus(void);voidmain(){ global=1;
printf("Before
GlobalPlusPlus(),itis%d\n",global);
GlobalPlusPlus();
printf("After
GlobalPlusPlus(),itis%d\n",global);}/*函數(shù)功能:對(duì)全局變量global加1,并打印加1之前與之后的值函數(shù)入口參數(shù):無函數(shù)返回值:無*/void
GlobalPlusPlus(void){
printf("Before++,itis%d\n",global); global++;
printf("After++,itis%d\n",global);}BeforeGlobalPlusPlus(),itis1Before++,itis1After++,itis2AfterGlobalPlusPlus(),itis22023/7/21#include<stdio.h>void
GlobalPlusPlus(void);voidmain(){
intglobal=1;
printf("Before
GlobalPlusPlus(),itis%d\n",global);
GlobalPlusPlus();
printf("After
GlobalPlusPlus(),itis%d\n",global);}/*函數(shù)功能:對(duì)global加1,并打印加1之前與之后的值函數(shù)入口參數(shù):無函數(shù)返回值:無*/void
GlobalPlusPlus(void){
intglobal=1;
printf("Before++,itis%d\n",global); global++;
printf("After++,itis%d\n",global);}2023/7/21變量的存儲(chǔ)類型指數(shù)據(jù)在內(nèi)存中存儲(chǔ)的方式即編譯器為變量分配內(nèi)存的方式,它決定變量的生存期動(dòng)態(tài)存儲(chǔ)根據(jù)需要臨時(shí)分配存儲(chǔ)空間,離開即釋放靜態(tài)存儲(chǔ)在程序運(yùn)行期間分配固定的存儲(chǔ)空間不釋放程序區(qū)靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)形參、自動(dòng)變量、函數(shù)調(diào)用的現(xiàn)場(chǎng)等全局變量、靜態(tài)變量2023/7/21#include<stdio.h>void
Func(void);voidmain(){
inti;
for(i=0;i<10;i++) {
Func(); }}/*函數(shù)功能:打印被調(diào)用的次數(shù)
函數(shù)入口參數(shù):無函數(shù)返回值:無*/voidFunc(void){
inttimes=1; /*自動(dòng)變量*/
printf("Func()wascalled%dtime(s).\n",times++);}Func()wascalled1time(s).Func()wascalled1time(s).Func()wascalled1time(s).Func()wascalled1time(s).Func()wascalled1time(s).Func()wascalled1time(s).Func()wascalled1time(s).Func()wascalled1time(s).Func()wascalled1time(s).Func()wascalled1time(s).
2023/7/21#include<stdio.h>void
Func(void);voidmain(){
inti;
for(i=0;i<10;i++) {
Func(); }}/*函數(shù)功能:打印被調(diào)用的次數(shù)
函數(shù)入口參數(shù):無函數(shù)返回值:無*/voidFunc(void){
static
inttimes=1; /*靜態(tài)局部變量*/
printf("Func()wascalled%dtime(s).\n",times++);}Func()wascalled1time(s).Func()wascalled2time(s).Func()wascalled3time(s).Func()wascalled4time(s).Func()wascalled5time(s).Func()wascalled6time(s).Func()wascalled7time(s).Func()wascalled8time(s).Func()wascalled9time(s).Func()wascalled10time(s).
2023/7/21自動(dòng)變量(auto)“自動(dòng)”體現(xiàn)在進(jìn)入語句塊時(shí)自動(dòng)申請(qǐng)內(nèi)存,退出時(shí)自動(dòng)釋放內(nèi)存標(biāo)準(zhǔn)定義格式auto類型名變量名;動(dòng)態(tài)局部變量缺省的存儲(chǔ)類型不初始化時(shí),值是不確定的2023/7/21靜態(tài)變量(static)一般的內(nèi)部變量在函數(shù)退出后失效,再次進(jìn)入函數(shù),變量值重新初始化靜態(tài)變量在變量類型前面用static修飾staticinti;變量的值可以保存到下次進(jìn)入函數(shù),使函數(shù)具有記憶功能靜態(tài)變量和全局變量都是靜態(tài)存儲(chǔ)類型自動(dòng)初始化為0從靜態(tài)存儲(chǔ)區(qū)分配,生存期為整個(gè)程序運(yùn)行期間但作用域不同2023/7/21寄存器變量(register)寄存器CPU的內(nèi)部容量很有限、但速度極快的存儲(chǔ)器使用頻率比較高的變量聲明為register
,可以使程序更小、執(zhí)行速度更快register類型名變量名;registerinti;現(xiàn)代編譯器有能力自動(dòng)把普通變量?jī)?yōu)化為寄存器變量,并且可以忽略用戶的指定,所以一般無需特別聲明變量為register
2023/7/21函數(shù)的嵌套調(diào)用函數(shù)的嵌套調(diào)用指在一個(gè)函數(shù)體內(nèi),可以調(diào)用另外一個(gè)函數(shù)#include<stdio.h>voidmain(){……
printf(“sum=%d”,add(x,y));}C語言規(guī)定:函數(shù)不能嵌套定義,但是可以嵌套調(diào)用2023/7/21函數(shù)設(shè)計(jì)的原則函數(shù)的功能要單一,不要設(shè)計(jì)多用途的函數(shù)函數(shù)的規(guī)模要小,盡量控制在50行代碼以內(nèi)1986年IBM在OS/360的研究結(jié)果:大多數(shù)有錯(cuò)誤的函數(shù)都大于500行1991年對(duì)148,000行代碼的研究表明:小于143行的函數(shù)比更長(zhǎng)的函數(shù)更容易維護(hù)參數(shù)和返回值的規(guī)則參數(shù)要書寫完整,不要省略對(duì)函數(shù)的入口參數(shù)進(jìn)行有效性檢查沒有參數(shù)和返回值時(shí),用void填充每個(gè)函數(shù)只有一個(gè)入口和一個(gè)出口,盡量不使用全局變量盡量少用靜態(tài)局部變量,以避免使函數(shù)具有“記憶”功能2023/7/21向函數(shù)傳遞一維數(shù)組求全班高數(shù)成績(jī)的最高分,用函數(shù)調(diào)用實(shí)現(xiàn)voidmain(){
int
score[ARR_SIZE]={0},MaxScore=0,i;
printf("Pleaseenterscores:");
for(i=0;i<ARR_SIZE;i++)scanf("%d",&score[i]);
MaxScore=score[0];
for(i=0;i<ARR_SIZE;i++)
if(MaxScore<score[i])MaxScore=score[i];
printf("MaxScore=%d\n",MaxScore);}2023/7/21#defineM30int
GetMax(…);voidmain(){
int
math[M],I,max;
for(i=0;i<M;i++)scanf("%d",&math[i]);max=GetMax(…);
printf("%d",max);}int
GetMax(…){…}提示2023/7/21
數(shù)組名作函數(shù)參數(shù)傳遞整個(gè)數(shù)組到另一個(gè)函數(shù)內(nèi),可以將數(shù)組的首地址作為參數(shù)傳過去用數(shù)組名作為函數(shù)參數(shù)只拷貝一個(gè)地址自然比拷貝全部數(shù)據(jù)效率高由于首地址相同,故實(shí)參數(shù)組與形參數(shù)組占用同一段內(nèi)存這樣,在該函數(shù)內(nèi),不僅可以讀這個(gè)數(shù)組的元素,還可以修改它們2023/7/21#defineM30int
GetMax(int
array[],intn);voidmain(){
int
math[M],i,max;
for(i=0;i<M;i++)scanf("%d",&math[i]);max=GetMax(math,M);
printf("%d",max);}int
GetMax(int
array[],intn){
int
i,max=0;max=array[0];/*max=array[0];
???*/
for(i=0;i<n;i++)max=array[i];returnmax;}2023/7/21字符串拷貝——用字符數(shù)組編程voidMyStrcpy(chardstStr[],charsrcStr[]){
inti=0;
while(srcStr[i]!='\0') { dstStr[i]=srcStr[i]; i++; } dstStr[i]='\0';}下標(biāo):01234567891011Hell
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/TS 6201:2025 EN Health informatics - Personalized digital health framework
- 2025版新型實(shí)木地板安裝與維護(hù)一體化合同
- 2025年在線教育平臺(tái)課程銷售傭金及教學(xué)資源合作合同
- 2025年度綜合性幼兒園運(yùn)營(yíng)管理承包合同
- 2025年激光測(cè)距儀、測(cè)向儀合作協(xié)議書
- 2025年鋼鐵廠鋼筋施工勞務(wù)承包合同:成本控制
- 業(yè)務(wù)部門財(cái)務(wù)支持計(jì)劃
- 幼兒園小班的校園文化建設(shè)工作計(jì)劃
- 玩中學(xué)學(xué)中玩計(jì)劃
- 細(xì)化貨物標(biāo)識(shí)與管理的措施計(jì)劃
- 【湘教版】2024-2025學(xué)年七年級(jí)數(shù)學(xué)下冊(cè)教學(xué)工作計(jì)劃(及進(jìn)度表)
- 二零二五版洗煤廠與礦業(yè)公司合作洗煤業(yè)務(wù)合同3篇
- 2025年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招高職單招英語2016-2024歷年頻考點(diǎn)試題含答案解析
- 2024預(yù)防流感課件完整版
- 2024年安徽省高校分類考試對(duì)口招生語文試卷真題(含答案)
- 新概念英語第2冊(cè)課文(完整版)
- 房產(chǎn)部經(jīng)紀(jì)人崗前培訓(xùn)——稅費(fèi)計(jì)算ppt課件
- 室外道路及管網(wǎng)工程施工招標(biāo)文件(DOC43頁)
- 《物理化學(xué)》電子教案(上冊(cè))(共84頁)
- 煤礦績(jī)效考核管理辦法
- 設(shè)備安裝施工方案(完整版)
評(píng)論
0/150
提交評(píng)論