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

正文內(nèi)容

c語言程序設(shè)計(jì)(中)ppt-資料下載頁

2025-01-19 07:15本頁面
  

【正文】 a[3] a[4] a[5] a[6] a[7] a[8] a[9] 調(diào)用 arr_reverse 后 0 9 8 7 6 5 4 3 2 1 arr[0] arr[1] arr[2] arr[3] arr[4] arr[5] arr[6] arr[7] arr[8] arr[9] 數(shù)組名作參數(shù)與變量不同,系統(tǒng)并不為形參數(shù)組重新開辟存儲空間,只是將實(shí)參數(shù)組名所在內(nèi)存中的起始地址傳遞給形參數(shù)組名。因此,實(shí)參數(shù)組與形參數(shù)組在內(nèi)存中的存儲位置相同。調(diào)用函數(shù)前后 a數(shù)組存儲情況如圖所示。 ( 2)二維數(shù)組的傳遞 ?【 例 】 定義一個(gè)函數(shù),其功能是實(shí)現(xiàn)矩陣轉(zhuǎn)置。 ?矩陣轉(zhuǎn)置就是將原矩陣行列交換,如 a是一個(gè)兩行三列的矩陣,轉(zhuǎn)置后變?yōu)槿袃闪械木仃?b。用二維數(shù)組存儲矩陣,將對應(yīng)的行列下標(biāo)交換,實(shí)現(xiàn)轉(zhuǎn)置。 1 4 2 5 3 6 矩陣 a 矩陣 b 1 2 3 4 5 6 include void transposition(int array_bef[2][3], int array_aft[3][2]) //轉(zhuǎn)置函數(shù) { int i, j。 for(i=0。i2。i++) for(j=0。j3。j++) array_aft[j][i]=array_bef[i][j]。 //行列下標(biāo)交換 } void main( ) { int a[2][3],b[3][2]。 int m,n。 void transposition(int array_bef[2][3],int array_aft[3][2])。 printf(input one 2*3 array:\n)。 for(m=0。m2。m++) for(n=0。n3。n++) scanf(%d,amp。a[m][n])。 printf(before:\n)。 for(m=0。m2。m++) {for(n=0。n3。n++) printf(%5d,a[m][n])。 printf(\n)。} transposition(a,b)。 printf(after:\n)。 for(m=0。m3。m++) {for(n=0。n2。n++) printf(%5d,b[m][n])。 printf(\n)。 } } 程序運(yùn)行結(jié)果: input one 2*3 array: 1? 2? 3? 4? 5? 6? before: 1 2 3 4 5 6 after: 1 4 2 5 3 6 ( 3)字符串傳遞 ?字符串作參數(shù),就是字符類型數(shù)組作參數(shù),與一維、二維數(shù)組作參數(shù)類似。 ?【 例 】 定義一個(gè)函數(shù),其功能是將字符串中的字母轉(zhuǎn)換成小寫。 ?編制函數(shù) lower( ),用數(shù)組作形參,將字符串的中所有字母都轉(zhuǎn)換為小寫。在 main( )函數(shù)中定義一個(gè)字符數(shù)組,數(shù)組名作實(shí)參傳遞給 lower( )函數(shù)的形參。 include include void lower(char str[80]) { int i。 for(i=0。str[i]!=39。\039。i++) //tolowe庫函數(shù),功能是將字符轉(zhuǎn)換為小寫字母 str[i]=tolower(str[i])。 } void main( ) { char s[80]。 void lower(char str[10])。 printf(input a string:\n)。 gets(s)。 lower(s)。 printf(output:\n)。 puts(s)。 } 程序運(yùn)行結(jié)果: input a string: ABC_123? output: abc_123 函數(shù)返回值傳遞 ? 函數(shù)返回值由被調(diào)用函數(shù)向調(diào)用函數(shù)單向傳遞。函數(shù)返回值可以是 int, float等基類型或構(gòu)造類型的變量和表達(dá)式,這類函數(shù)成為基類型函數(shù)。基類型函數(shù)只由以單個(gè)變量或表達(dá)式通過 return語句返回一個(gè)值,不能返回?cái)?shù)組、字符串或函數(shù),即數(shù)組名和函數(shù)名不能出現(xiàn)在基類型函數(shù)的return語句中。返回指針的函數(shù)請參考第 6章。 全局變量傳遞 ? 1. 變量作用域 ? 變量作用域就是變量有作用的范圍,一個(gè)變量在其作用域內(nèi)是“可見的”,即可以對它進(jìn)行存取。 ? ( 1)局部變量 ? 在一個(gè)函數(shù)內(nèi)定義的變量是局部變量 ,它只在本函數(shù)范圍內(nèi)有效,也就是說只有本函數(shù)能夠使用它們,其他函數(shù)不能使用。 ? 函數(shù)的形參、函數(shù)內(nèi)定義的變量、復(fù)合語句內(nèi)定義的變量都是局部變量。 局部變量說明: ① 函數(shù)的形參是局部變量,只在本函數(shù)內(nèi)有效。如本例中i_fun( )的形參 x和 f_fun( )函數(shù)的形參 a, b。 ② 不同函數(shù)的局部變量可以同名,但它們代表不同的對象,在內(nèi)存中存儲的位置也不同,互不干擾。如本例中i_fun( )和 main( )中都定義了各自的局部變量 x和 y。 ③ 在函數(shù)體內(nèi)的復(fù)合語句中定義的變量,只在此復(fù)合語句內(nèi)有效。如本例 main( )函數(shù)中復(fù)合語句內(nèi)定義的 s,當(dāng)復(fù)合語句執(zhí)行結(jié)束, s無效并釋放內(nèi)存。 int i_fun( int x) { int y。 … } float f_fun( float a, int b) { float c。 … } void main( ) { int x, y。 float m, n。 … { int s。 s=m+n。 … } } x, y有效 a, b, c有效 x, y, m, n有效 s有效 ?( 2)全局變量 ?局部變量都是定義在函數(shù)內(nèi),與其相反, 全局變量定義在所有函數(shù)的外部。 全局變量可以被它所在程序文件中的所有函數(shù)調(diào)用,它的有效范圍從定義位置到所在源文件結(jié)束。 全局變量說明: ① 盡管 x, y, m和 n都全局變量,但它們的作用范圍不同。f_fun( )函數(shù)和 main( )函數(shù)可以使用 x和 y,而 main( )函數(shù)可以使用 m和 n, f_fun( )函數(shù)不能使用它們。 ② 在同一源文件中,當(dāng)局部變量與全局變量同名時(shí),局部變量有效。例 main( )函數(shù)中使用 x和 y是對局部變量,它們的值分別是 1和 2,而不是全局變量值 3和 5。 int x=3, y=5。 //全局變量 x, y float f_fun( float a, int b) { float c。 … } char m, n。 //全局變量 m, n void main( ) { int x=1, y=2。 … } m, n作用范圍 x, y作用范圍 全局變量傳遞 ?2. 全局變量傳遞 ?可利用全局變量作用域的范圍特點(diǎn)在函數(shù)間傳遞數(shù)據(jù)。當(dāng)一個(gè)函數(shù)改變了該全局變量的值,那么其他函數(shù)內(nèi)的同名全局變量值將隨之改變。 ?說明: ① 由于函數(shù)依賴全局變量,使得函數(shù)的通用性降低。 ② 利用全局變量在函數(shù)間傳遞數(shù)據(jù),加大了函數(shù)間的耦合性,降低了內(nèi)聚性。 【 例 】 定義一個(gè)函數(shù),其功能是求一組數(shù)據(jù)的最大值。 include float MAX。 void main( ) { float a[10]。 int i。 void max_fun( float range[], int n)。 printf (“input 10 numbers:\n”)。 for (i=0。i10。i++) scanf (“%f”, amp。a[i])。 max_fun (a, 10)。 printf (“MAX=%f\n”, MAX)。 } void max_fun ( float range[], int n) { int i。 MAX=range[0]。 for (i=1。 in。 i++) { if (MAXrange[i]) MAX= range[i]。 } } 程序運(yùn)行結(jié)果: input 10 numbers: 1 6 3 5 12 0 10 8? MAX= 變量和函數(shù)的存儲類型 ?變量的存儲類型決定變量在內(nèi)存中存放的位置、作用域和生命期。 ?函數(shù)的存儲類型決定函數(shù)的作用域。 變量的存儲類型 ? ?一個(gè) C程序運(yùn)行時(shí),程序使用的內(nèi)存區(qū)被分為四部分。 ?( 1)代碼區(qū),用于存放程序的可執(zhí)行代碼; ?( 2)全局和靜態(tài)變量存儲區(qū)(又稱靜態(tài)變量存儲區(qū)),用于存放程序中定義的全局變量和靜態(tài)局部變量; ?( 3)堆,自由存儲區(qū),程序可通過調(diào)用動態(tài)內(nèi)存分配函數(shù)使用它; ?( 4)堆棧,用于存放自動變量(包括局部變量和形式參數(shù))、函數(shù)調(diào)用時(shí)現(xiàn)場保護(hù)信息和返回地址等。 堆棧 堆 全局和靜態(tài)變量區(qū) 代碼區(qū) 2. 局部變量的存儲類型 ?局部變量的存儲類型分為三種: auto(自動 )、 register(寄存器 )和 static(靜態(tài) )。 ?( 1) auto型局部變量 ?存放在內(nèi)存的動態(tài)變量存儲區(qū)(堆棧區(qū))中,以堆棧的方式存儲。當(dāng)函數(shù)被調(diào)用時(shí)為變量分配存儲空間,當(dāng)函數(shù)執(zhí)行結(jié)束,該變量所占存儲空間被釋放。也就是說,自動變量的生命期是它所在函數(shù)的被調(diào)用期間;如果函數(shù)未被調(diào)用,那么變量不占用內(nèi)存空間;若所在函數(shù)被多次調(diào)用,系統(tǒng)每次為變量分配的存儲空間位置可能不同;變量所占用的存儲空間是動態(tài)分配和回收的,有效地節(jié)省了內(nèi)存空間。 ?( 2) static型局部變量 ?存放在內(nèi)存的靜態(tài)變量存儲區(qū),在編譯程序時(shí)由系統(tǒng)分配存儲空間,在整個(gè)程序運(yùn)行期間始終占用該存儲位置。因此,靜態(tài)變量的生命期是整個(gè)程序運(yùn)行期間。當(dāng)程序運(yùn)行結(jié)束,才釋放變量所占存儲空間。 2. 局部變量的存儲類型 ?【 例 】 動態(tài)局部變量示例。 ?include ?int fun( ) ?{ ? auto int x=1。 ? x++。 ? return x。 ?} ?void main( ) ?{ ? int a=1, i。 ? for(i=1。i=3。i++) ? printf(“%d\n”, fun( ))。 ?} 程序運(yùn)行結(jié)果: 2 2 2 【 例 】 靜態(tài)局部變量示例。 include int fun( ) { static int x=1。 x++。 return x。 } void main( ) { int a=1, i。 for(i=1。i=3。i++) printf(“%d\n”, fun( ))。 } 程序運(yùn)行結(jié)果: 2 3 4 2. 局部變量的存儲類型 ?局部變量的存儲類型分為三種: auto(自動 )、 register(寄存器 )和 static(靜態(tài) )。 ?( 3) register型局部變量 ?存放在運(yùn)算器的通用寄存器中,其生命期與 auto型相同。對寄存器的存取比內(nèi)存快。但對于寄存器的使用有兩個(gè)限制:一是只限于 char型和 int型;二是通用寄存器有數(shù)量限制,一般微型只允許使用 2~3個(gè),所以定義寄存器變量不能超過指定的數(shù)量。若超過了使用限制,自動將多余的變量作為 auto型變量處理。 ?通常將頻繁使用的變量定義為 register類型,它被存儲在 CPU的寄存器里,讀取數(shù)據(jù)速度快。 3. 全局變量的存儲類型 ?全局變量的存儲類型可以是 static或 extern類型。 ?( 1)對全局變量使用 static說明表示該全局變量的作用域限制在它所在的程序文件內(nèi)。當(dāng)一個(gè)程序包含多件文件時(shí),在一個(gè)程序文件中定義的全局靜態(tài)變量,只在被所在文件引用,不能被其他文件引用,實(shí)現(xiàn)了數(shù)據(jù)隱藏。 ?( 2)對全局變量使用 extern說明可以擴(kuò)大全局變量的作用域。在同一個(gè)程序文件中,全局變量的作用域從定義位置開始,到所在文件結(jié)束;因此,定義在全局變量前的函數(shù)不用引用它;若使用 extern說明該變量,那么它前面的函數(shù)可以引用它。若一個(gè)程序由多個(gè)文件組成,在其中一個(gè)文件內(nèi)定義了全局變量,在其他文件中對該全局變量使用 extern說明,不必重新定義,因?yàn)樽兞恐欢x一次,可以多次使用 extern說明,擴(kuò)大全局變量的引用范圍,實(shí)現(xiàn)數(shù)據(jù)共享。 【 例 】 比較 extern型全局變量和 static型全局變量的異同。 ? /* */ ? include ? int ext_A。 //定義全局變量 e
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1