版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
一周情況說(shuō)明作業(yè)最近兩周密集批改學(xué)到循環(huán)為止,應(yīng)該對(duì)基本語(yǔ)法和知識(shí)點(diǎn)熟悉,有解題的手感和預(yù)感學(xué)完函數(shù),能初步規(guī)劃出程序的結(jié)構(gòu),擅長(zhǎng)使用函數(shù)優(yōu)化程序架構(gòu),降低解題難度從數(shù)組開(kāi)始,務(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ù)定義的語(yǔ)法遠(yuǎn)比函數(shù)調(diào)用的要嚴(yán)格很多2023/7/21函數(shù)原型函數(shù)和變量一樣,要先定義后使用如果函數(shù)調(diào)用出現(xiàn)在函數(shù)定義之前,必須使用函數(shù)原型說(shuō)明該函數(shù)有幾個(gè)參數(shù),參數(shù)的類型,和返回值的類型,才能保證編譯器正常完成工作示例doubleadd(double,double);intmain(){……
add(a,b);}doubleadd(double
x,doubley){……}2023/7/21對(duì)函數(shù)接口加以注釋說(shuō)明/*函數(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)}語(yǔ)句塊(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說(shuō)明被大括號(hào)括起來(lái)的區(qū)域,叫做語(yǔ)句塊(Block)函數(shù)體、循環(huán)體、分支結(jié)構(gòu)都可以看作語(yǔ)句塊變量的作用域規(guī)則是:每個(gè)變量?jī)H在定義它的語(yǔ)句塊內(nèi)(包含下級(jí)語(yǔ)句塊)內(nèi)有效,并擁有自己的內(nèi)存空間同一語(yǔ)句塊內(nèi)不可以定義同名變量,不同語(yǔ)句塊內(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局部變量局部變量在語(yǔ)句塊內(nèi)定義的變量形參也是局部變量特點(diǎn)進(jìn)入語(yǔ)句塊時(shí)獲得內(nèi)存,僅能由語(yǔ)句塊內(nèi)語(yǔ)句訪問(wèn),退出語(yǔ)句塊時(shí)釋放內(nèi)存,不再有效定義時(shí)不會(huì)自動(dòng)初始化,除非程序員指定初值并列語(yǔ)句塊各自定義的同名變量互不干擾2023/7/21全局變量全局變量在所有函數(shù)之外定義的變量特點(diǎn)在程序中從定義它的位置以后都有效在定義點(diǎn)之前或在其他文件中引用,應(yīng)該進(jìn)行如下聲明:extern類型名變量名;從程序運(yùn)行起即占據(jù)內(nèi)存,程序運(yùn)行過(guò)程中可隨時(shí)訪問(wèn),程序退出時(shí)釋放內(nèi)存使函數(shù)之間的數(shù)據(jù)交換更容易,也更高效但是并不推薦使用,盡量少用因?yàn)檎l(shuí)都可以改寫全局變量,所以很難確定是誰(shuí)改寫了它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ù):無(wú)函數(shù)返回值:無(wú)*/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ù):無(wú)函數(shù)返回值:無(wú)*/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ǔ)空間,離開(kāi)即釋放靜態(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ù):無(wú)函數(shù)返回值:無(wú)*/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ù):無(wú)函數(shù)返回值:無(wú)*/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)入語(yǔ)句塊時(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)化為寄存器變量,并且可以忽略用戶的指定,所以一般無(wú)需特別聲明變量為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語(yǔ)言規(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ù)要書(shū)寫完整,不要省略對(duì)函數(shù)的入口參數(shù)進(jìn)行有效性檢查沒(méi)有參數(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ù)傳過(guò)去用數(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. 本站所有資源如無(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高考物理總復(fù)習(xí)專題十二機(jī)械振動(dòng)光學(xué)第4講光的波動(dòng)性、電磁波練習(xí)含答案
- 果蔬生鮮供應(yīng)合約
- 吉林省通化市外國(guó)語(yǔ)學(xué)校九年級(jí)化學(xué)上冊(cè) 第二單元 活動(dòng)1 氧氣的實(shí)驗(yàn)室制取與性質(zhì)教案 (新版)新人教版
- 二年級(jí)道德與法治上冊(cè) 第三單元 1《我愛(ài)秋天》教案2 浙教版
- 高中數(shù)學(xué) 第三章 指數(shù)函數(shù)、對(duì)數(shù)函數(shù)和冪函數(shù) 3.1.1 分?jǐn)?shù)指數(shù)冪(2)教案 蘇教版必修1
- 2024-2025學(xué)年新教材高中英語(yǔ) Unit 1 Knowing me Knowing you泛讀 技能初養(yǎng)成教案 外研版必修第三冊(cè)
- 2024-2025學(xué)年八年級(jí)物理下冊(cè) 第十一章 功和機(jī)械能 第1節(jié) 功教案 (新版)新人教版
- 高中語(yǔ)文 第7課 李清照詞兩首-聲聲慢教案2 新人教版必修4
- 2023七年級(jí)地理上冊(cè) 第三章 天氣與氣候 第一節(jié) 多變的天氣說(shuō)課稿 (新版)新人教版
- 文書(shū)模板-買賣合同的構(gòu)成要素
- 不同截面鋼牛腿設(shè)計(jì)計(jì)算(excel)
- 公安筆錄模板之詢問(wèn)筆錄字頭(證人治安案件)
- 生僻字歌詞注拼音版本
- 湘教版九年級(jí)上冊(cè)數(shù)學(xué)《第4章小結(jié)復(fù)習(xí)》課件
- 廣成儀制藥王正朝全集
- 已解密_彩盒性能技術(shù)規(guī)范
- 【芝麻灰】石材檢測(cè)報(bào)告
- 中國(guó)腦血管病防治指南+全文
- 抗美援越烈士們永垂不朽
- 2021年村法制宣傳臺(tái)賬(替換圖片 拿來(lái)即用)
- 兒童百分位標(biāo)準(zhǔn)曲線圖
評(píng)論
0/150
提交評(píng)論