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

正文內(nèi)容

c語(yǔ)言程序設(shè)計(jì)第8章(參考版)

2024-08-12 16:00本頁(yè)面
  

【正文】 即 s。 內(nèi)部函數(shù) 如果一個(gè)函數(shù)只能被本文件中其他函數(shù)所調(diào)用,它稱為內(nèi)部函數(shù)。但是,也可以指定函數(shù)不能被其他文件調(diào)用。兩種形式的外部變量都是靜態(tài)存儲(chǔ)方式,只是作用范圍不同而已,都是在編暉時(shí)分配內(nèi)存的。如果已知道其他文件不引用本文件的外部變量,可以對(duì)本文件中的外部變量都加上 static,成為靜態(tài)外部變量,以免彼其他文件誤用。 這種加上 static聲明,只能用于本文件的外部變量(全局變量)稱為靜態(tài)外部變量。 用 static聲明外部變量 有時(shí)在程序設(shè)計(jì)中希望 某些外部變量只限于被本文件引用,而不能被其他文件引用 。在各文件經(jīng)過(guò)編譯后,將備目標(biāo)文件聯(lián)接成一個(gè)可執(zhí)行的目標(biāo)文件; 2) 在編譯時(shí)遇到 extern時(shí),先在本文件中找外部變量的定義,如果找到,就在本文件中擴(kuò)展作用域,如果找不到,就在連接時(shí)從其他文件中找外部變量的定義,如果找到,就將作用域擴(kuò)展到本文件。 return(y)。i=n。 { int i,y=1。 } 文件 : extern A。 d=power(m)。 c=A*b。a,amp。 printf(“enter the number a and its power m:\n”)。 /*定義外部變量 */ main( ) { input power(int)。 例 給定 b的值,輸入 a和 m,求 a*b和 am的值。 如果一個(gè)程序包含兩個(gè)文件,在兩個(gè)文件中都要用到同一個(gè)外部變量,不能分別在兩個(gè)文件中對(duì)該變量各自定義,否則進(jìn)行程序的連接時(shí)會(huì)出現(xiàn)“重復(fù)定義”的錯(cuò)誤。 一個(gè) C程序可以由一個(gè)或多個(gè)源程序文件組成。表示該變量是一個(gè)已經(jīng)定義的外部變量。 有時(shí)需要用 extern來(lái)聲明外部變量,以 擴(kuò)展外部變量的作用域 . 如果外部變量不在文件的開頭定義,其 有效的作用范圍只限于定義處到文件終了 。在此作用域內(nèi),全局變量可以為程序中各個(gè)函數(shù)所引用。 3) 不同的系統(tǒng)對(duì)寄存器變量的處理方法是不同的,有的系統(tǒng)對(duì)寄存器不良當(dāng)自動(dòng)變量處理,分配內(nèi)存單元,有的系統(tǒng)只允許將 int, char和指針型變量定義為寄存器變量; 當(dāng)今的優(yōu)化編譯系統(tǒng)能夠識(shí)別使用頻繁的變量,從而自動(dòng)地將這些變量放在寄存器中,而不需要程序設(shè)計(jì)者指定; 4) 局部靜態(tài)變量 不能定義為 寄存器變量 。 } 說(shuō)明: 1)) 只有 局部自動(dòng)變量 和 形式參數(shù) 可以作為寄存器變量,其他(如全局變量)不行。i=5。 } main( ) { int i。i++) f=f*i。 for(i=1。由于對(duì)寄存器的存取速度遠(yuǎn)高于對(duì)內(nèi)存的存取速度,因此這樣就可以提高執(zhí)行效率。 如果有一些變量使用頻繁,則從內(nèi)存存取數(shù)據(jù)將花費(fèi)較多時(shí)間。 } register變量 一般情況下, 變量 (包括靜態(tài)存儲(chǔ)方式和動(dòng)態(tài)存儲(chǔ)方式)的值是 存放在內(nèi)存中的 ,當(dāng)程 序中用到哪一個(gè)變量的值時(shí),由控制器發(fā)出指令將內(nèi)存中該變量的值送到運(yùn)算器中。a[1]) swap(a)。 scanf(“%d % d”,amp。x[1]=t。 t=x[0]。 printf(“%d %d”,x,y)。x,amp。y=t。 t=x。 } 方法 2: include int x,y。b) swap(a,b)。 scanf(“%d % d”,amp。y=t。 t=x。 printf(%d\n, fun(a+fun(d)))。 return(d)。 d+=p。 int d=1。 return(f) 。 } int fac( int n) { static int f=1 。i<= 5。 int i 。因此,如不必要,不要多用靜態(tài)局部變量。 ( 2) 如果初始化后,變量只被引用而不改變其值,則這時(shí)用靜態(tài)局部變量比較方便,以免每次調(diào)用時(shí)重新賦值。 4) 雖然靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后仍然存在,但其他函數(shù)是不能引用它的。 自動(dòng)變量賦初值 ,不是在編譯時(shí)進(jìn)行,而是 在函數(shù)調(diào)用時(shí)進(jìn)行 ,每調(diào)用一次函數(shù)重新給一次初值,相當(dāng)于執(zhí)行一次賦值語(yǔ)句; 3) 如在定義局部變量時(shí)不賦初值的話,對(duì) 靜態(tài)局部變量 ,編譯時(shí)自動(dòng)賦初值 0(對(duì)數(shù)值型變量 )或 空字符 (對(duì)字符變量 )。i++) printf(“%d”,f(a))。 for(i=0。 return(a+b+c)。 b=b+1。 例 f (int a) { auto int b=0。這時(shí)就應(yīng)該指定該局部變量為” 靜態(tài)局部變量 ”,用關(guān)鍵字 static。調(diào)用 該函數(shù),系統(tǒng)給它們分配存儲(chǔ)空間,函數(shù)調(diào)用結(jié)束時(shí)自動(dòng)釋放存儲(chǔ)空間 實(shí)際上,關(guān)鍵字“ auto”可以省略, auto不寫則隱含確定為“自動(dòng)存儲(chǔ)類別” 。自動(dòng)變量用關(guān)鍵字 auto作存儲(chǔ)類別的聲明。 變量 和 函數(shù)的 屬性 : 數(shù)據(jù)類型 整型、字符型等 自動(dòng)( auto) 靜態(tài)( static) 數(shù)據(jù)存儲(chǔ)類別:靜態(tài)存儲(chǔ)類 和 動(dòng)態(tài)存儲(chǔ)類 。 動(dòng)態(tài)地進(jìn)行分配和釋放。 (未加 static聲明的局部變量)。在程序執(zhí)行過(guò)程中它們占據(jù)固定的存儲(chǔ)單元。分為三部分,見圖。 內(nèi)存中的供用戶使用的存儲(chǔ)空間的情況。 按 變量值生存期 來(lái)分:靜態(tài)存儲(chǔ)方式、動(dòng)態(tài)存儲(chǔ)方式。 printf(“%d\n”, d)。 fun(a)。 printf(“%d”, d)。 fun(int p) {int d=5。 } 結(jié)果為: 8 a,b為全局變量 a,b為局部變量 形參 a,b作用范圍 局部變量 a作用范圍 全局變量 b作用范圍 下列程序執(zhí)行后輸出的結(jié)果是( )。 } main( ) { int a=8。 c=ab?a:b。 int a=3,b=5。 return( aver) 。 sum=sum+array[i]。i++) { if( array[i]> Max) Max= array[i]。 for(i =1 。 float aver,sum=array [0 ]。 printf(“max=%\ nmin=%\ n average=%\ n“,Max,Min,ave)。i++) scanf(“%f” ,& score [i ]) 。 for(i=0 。 float ave, score[10]。 include float Max=0 , Min=0 。 利用全局變量可以在函數(shù)間傳遞數(shù)據(jù) 例 有一個(gè)一維數(shù)組 ,內(nèi)放 10個(gè)學(xué)生成績(jī)。 為了便于區(qū)別全局變量和局部變量,一般約定全局變量的 第一個(gè)字母用大寫; 2. 建議不在必要時(shí)不要使用全局變量,因?yàn)椋? ① 全局變量在程序的 全部執(zhí)行過(guò)程中都占用存儲(chǔ)單元 ,而不是僅在需要時(shí)才開辟單元。 …… } 全局變量 c1,c2 的作用范圍 全局變量 p,q 的作用范圍 在一個(gè)函數(shù)中,既可以使用本函數(shù)中的局部變量,也可以使用有效的全局變量 說(shuō)明: 1. 全局變量的主要作用時(shí)增加了函數(shù)間數(shù)據(jù)聯(lián)系的渠道 。 char f2(int x,int y) { int i,j。 float f1(int a) { int b,c。它的有效范圍為 從 定義變量的位置 開始到本源文件結(jié)束 。 在函數(shù)內(nèi)定義的變量是局部變量,而 在函數(shù)之外定義的變量稱為外部變量 , 外部變量是 全 局變量 (也稱全程變量) 。 c=a+b。 變量 a,b在 此范圍有效 ( 5)如果局部變量的有效范圍有重疊,則有效范圍小的優(yōu)先 main( ) { int a,b,c。 c=a+b。 ( 4) 在一個(gè)函數(shù)內(nèi)部,可以在復(fù)合語(yǔ)句中定義變量,這些變量只在本復(fù)合語(yǔ)句中有效,這種復(fù)合語(yǔ)句也可稱為“分程序”或“程序塊”, main( ) { int a,b。 ( 3) 形式參數(shù)也是局部變量 ,例如 fl函數(shù)中的形參 a,也只在 fl函數(shù)中有效。 主函數(shù)也不能使用其他函數(shù)中 定義的變量。 …… } main ( ) { int m,n。 float f1(int a) { int b,c。 printf(“Max is %d”,max(a))。 return m。j4。i3。 m=x[0][0]。 A) an anple B) elpna na C) an D) na D 復(fù)習(xí) 用多維數(shù)組作為實(shí)參和形參,遵循“ 地址傳遞 ”,形參值變化影響實(shí)參值變化; 在被調(diào)用函數(shù)中對(duì)形參數(shù)組定義時(shí)可以指定每一維的大小,也 可以省略第一維的大小說(shuō)明 ; 判斷以下定義形式哪些是正確的 ? int max(int x[3][5]) int max (int x[ ][5]) int max(int x[3][ ] ) int max( int x[ ][ ]) 從實(shí)參傳遞來(lái)的是數(shù)組起始地址,在內(nèi)存中按數(shù)組排列規(guī)則存放( 按行存放 ),并不區(qū)分行和列,與此 不能省略第二維; 注意: 二維數(shù)組的一維表示時(shí),其元素與一維數(shù)組等同。 printf(“%s\n”, str)。 scanf(“%s”, str)。 str[j1]=t。 i++, j) {t=str[i]。 for(i=0, j=strlen(str)。 現(xiàn)有以下程序: include inverse(char str[ ]) {char t。 1)形參數(shù)組也可以不指定大小,在定義數(shù)組時(shí)在數(shù)組名后面跟一個(gè)空的方括弧,為了在被調(diào)用函數(shù)中處理數(shù)組元素的需要, 可以另設(shè)一個(gè)參數(shù),傳遞數(shù)組元素的個(gè)數(shù) 。 } A) 1 B) 2 C) 3 D) 4 A 遞歸函數(shù)編寫總結(jié): 1) 采用 if語(yǔ)句格式; 2)兩要素: 遞歸結(jié)束條件 遞歸公式 3)一般形式 if(遞歸結(jié)束條件 ) else 遞歸公式 復(fù)習(xí) 數(shù)組元素 作函數(shù)實(shí)參: “值傳遞”方式,即單向傳遞 。 return s。 if(n= =1 || n= =2) s=2。 } 例:以下程序的輸出結(jié)果是( )。i++) printf(%d,a[i])。 for(i=0。 sort(a,10)。i++) scanf(%d,amp。 for(i=0。array[i]=t。j++) if(array[j]array[i]) {t=array[j]。i++) { for(j=i+1。 for(i=0。 } 例 用選擇法對(duì)數(shù)組中 10個(gè)整數(shù)按由小到大排序。 aver=average(score)。score[i])。i10。 printf(“input 10 score:\n”)。 } main( ) { float score[10],aver。 aver=sum/10。i10。 float aver,sum=array[0]。 } 例 有一個(gè)一維數(shù)組 score,內(nèi)放 10個(gè)學(xué)生成績(jī),求平均成績(jī)。a[i])。i10。 printf(“Enter 10 integer:\n)。i++) if(mx[i]) m=x[i]。 for (i=1。 } include int max( in
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1