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

正文內(nèi)容

c語言實(shí)驗(yàn)教程(中)清華大學(xué)ppt-資料下載頁

2025-10-07 16:01本頁面
  

【正文】 n s。 } void main() { int i。 for (i=0。i5。i++) printf(%4d,sum(10))。 } 運(yùn)行結(jié)果: 10 20 30 40 50 第八章 函數(shù) ? 全局靜態(tài)變量又稱外部靜態(tài)變量,在函數(shù)外定義,定義前加 static說明。它的作用域是定義它的源文件,并且是從定義點(diǎn)開始。 (register) 這類變量存放在 CPU的通用寄存器中。它的作用域與自動(dòng)變量相同,只有自動(dòng)變量和形參可以說明為寄存器類。寄存器類變量在定義前加上保留字 register,如下列形式: { register int i。 for (i=0。in。i++) { ? } } 第八章 函數(shù) ? 變量存放在寄存器中,其處理速度要比存放在內(nèi)存中的自動(dòng)變量快得多。另外需要指出,寄存器變量不能進(jìn)行地址運(yùn)算(地址運(yùn)算的概念見 節(jié)),也不能是靜態(tài)變量。 (extern) 全局變量默認(rèn)的作用域是從它的定義點(diǎn)開始到本源文件的末尾。如果在定義點(diǎn)之前的函數(shù)要引用該全局變量,需要在引用之前對(duì)該變量作外部變量說明;同樣,在定義全局變量之外的其它文件要引用該全局變量,也需要在引用之前作外部變量說明。說明外部變量時(shí),在變量名前加上外部變量說明保留字 extern,請(qǐng)看下面示意性程序: 第八章 函數(shù) (1)定義點(diǎn)之前的函數(shù)引用全局變量,必須加外部說明。 void main() { extern int a。 ? /* 這里可引用 a,因?yàn)榍懊嬉褜?duì) a作了外部說明 */ } int a。 float f1(int x) { ? /* 本函數(shù)位于全局變量 a定義之后,可引用 a */ } float f2 (char x, float y) { float a。 ? /* 這里可以引用局部變量 a,在 f2內(nèi)全局變量 a被隱蔽 */ } 第八章 函數(shù) (2)其它文件要引用本文件中的全局變量,應(yīng)該加外部說明,請(qǐng)看下面示意性程序: /* */ int x。 void main() { ? /* 可引用全局變量 x */ } /* file */ extern int x。 float fun(float a) { ? /* 可引用 file1中定義的變量 x */ /* 因?yàn)樵诒疚募校?x已作了外部說明 */ } 第八章 函數(shù) ? 內(nèi)部函數(shù)與外部函數(shù) ? 定義函數(shù)也需要指明存儲(chǔ)類,函數(shù)的存儲(chǔ)類分內(nèi)部(靜態(tài))的和外部的。根據(jù)函數(shù)的使用范圍,可以分為內(nèi)部函數(shù)和外部函數(shù)。 內(nèi)部函數(shù)又稱靜態(tài)函數(shù),它只能被本文件中的其它函數(shù)調(diào)用。在定義內(nèi)部函數(shù)時(shí),前面應(yīng)加上保留字 static,如: static float fun1(float x,float y) { ? } 函數(shù) fun1的作用范圍僅限于定義它的源文件,而其它文件中的函數(shù)不能調(diào)用它。 第八章 函數(shù) 在定義函數(shù)時(shí),若加上保留字 extern,則表明該函數(shù)是外部的,如: extern int fun2(int x, int y) { ? } 函數(shù) fun2可被其它文件中的函數(shù)所調(diào)用。如有其它文件中的函數(shù)需要調(diào)用 fun2,需要在該文件中增加 fun2的函數(shù)說明(在調(diào)用之前),函數(shù)說明中也需要使用 extern保留字說明所調(diào)用的函數(shù)是外部的。 注意,在定義函數(shù)時(shí)如果未指明存儲(chǔ)類,則該函數(shù)默認(rèn)為外部的。 第八章 函數(shù) ? 應(yīng)用舉例 2 例 產(chǎn)生隨機(jī)數(shù)的函數(shù)。 產(chǎn)生隨機(jī)數(shù)最常用的方法是線性同余法,這時(shí)一個(gè)隨機(jī)數(shù)可以用前一個(gè)隨機(jī)數(shù)求得: ri = ( multiplier * ri1 + increment ) % modulus 實(shí)際上這不是真正的隨機(jī)數(shù),而是通過 ri1算出 ri。但如果幾個(gè)參數(shù)選得合適,從效果上看還是很像隨機(jī)數(shù)的,因此又把這樣產(chǎn)生的數(shù)叫偽隨機(jī)數(shù)。比如這樣選擇參數(shù): r=(r*123+59)%65536 只要給出一個(gè) r的初值,就能計(jì)算出下一個(gè) r,程序如下: 第八章 函數(shù) include unsigned random() { static unsigned r=100。 r=(r*123+59)%65536。 return r。 } void main() { int i。 for (i=0。i10。i++) printf( %u,random())。 } 運(yùn)行結(jié)果: 12359 12888 12419 20268 2655 64480 1243 21876 3831 12520 第八章 函數(shù) 例 上述產(chǎn)生隨機(jī)數(shù)序列的程序,還可以將變量 r說明為靜態(tài)全局變量,程序如下: include static unsigned r。 unsigned random() { r=(r*123+59)%65536。 return r。 } void random_init(unsigned seed) { r=seed。 } 第八章 函數(shù) void main() { unsigned i,n。 scanf(%d,amp。n)。 random_init(n)。 for (i=0。i10。i++) printf( %u,random())。 } 運(yùn)行結(jié)果: 100CR 12359 12888 12419 20268 2655 64480 1243 21876 3831 12520 第八章 函數(shù) 例 分析下面程序的輸出結(jié)果。 該程序由下面三個(gè)文件組成: /* example : */ include int i=1。 void main() { int i,j。 i=reset()。 for (j=1。j=3。j++) { printf(i=%d\tj=%d\n,i,j)。 printf(next=%d\t,next())。 printf(last=%d\t,last())。 printf(new=%d\n,new(i+j))。 } } 第八章 函數(shù) next() { return(i++)。 } /* example : */ static int i=10。 int last() { return (i=1)。 } int new1(int i) { static int j=5。 return(i=j+=++i)。 } 第八章 函數(shù) /* example : */ extern int i。 int reset() { return (i)。 } 運(yùn)行結(jié)果: i=1 j=1 next=1 last=9 new=8 i=1 j=2 next=2 last=8 new=12 i=1 j=3 next=3 last=7 new=17 第九章 指針 ? 本章重點(diǎn)掌握: ? 指針的概念和運(yùn)算 ? 指針在函數(shù)調(diào)用中的作用 ? 指針與數(shù)組的關(guān)系 第九章 指針 ? 指針的概念 ? 什么是指針 ? 指針是用來存放某個(gè)對(duì)象地址的變量,它存放了哪個(gè)對(duì)象的地址值,就說它是指向哪個(gè)對(duì)象的指針 ? “指針的類型”是它所指向的對(duì)象的類型,而不是它本身的類型 ? 假如在程序中定義了一個(gè)整型變量 a,程序執(zhí)行時(shí),系統(tǒng)會(huì)為變量 a分配相應(yīng)的存儲(chǔ)單元;如果所分配存儲(chǔ)單元的地址為 1000H,可以通過該地址去訪問a(如賦值 5),這種訪問方式稱為“直接訪問”,還可以把 a的地址值 1000H存放在變量 pa中,這樣就可以通過 pa的地址 (如 3000H)找到 a的地址 1000H,然后再訪問 a,這種訪問方式稱為“間接訪問”。變量 pa就是指向 a的指針。如圖所示 第九章 指針 ? 指針變量的定義 ? 指針變量定義的一般形式如下: 類型標(biāo)識(shí)符 *指針變量名 。 ? 例如: ? int *pi。/* pi是指向 int型變量的指針 */ ? float *pf。 /* pf是指向 float型變量的指針 */ pa 3000 H a a 1000 H 5 1000 H 5 1000 H 第九章 指針 ? 指針的運(yùn)算 (1)取地址運(yùn)算符 amp。 amp。是單目運(yùn)算符,它求出運(yùn)算對(duì)象的地址。如: int a,*pa。 pa=amp。a。 (2)間接訪問運(yùn)算符 * *也是單目運(yùn)算符,當(dāng)它作用于指針上時(shí),用來間接訪問該指針?biāo)傅膶?duì)象。如: int a=5,b,*pa。 pa=amp。a。 /* pa現(xiàn)在指向 a */ b=*pa。 /* b現(xiàn)在為 5 */ *pa=0。 /* a現(xiàn)在為 0 */ 第九章 指針 (1)指針可以用某個(gè)變量的地址賦值 例如: int a,*pa。 pa=amp。a。 注意,指針在使用之前必須先使它指向某個(gè)具體的地址。例如若沒有 pa=amp。a,則 pa的指向不確定,盡管此時(shí)可以進(jìn)行間接訪問,如 *pa=5,但 5存放在哪里了并不知道 (2)可以將一個(gè)已賦值的指針賦給另一個(gè)指針 例如: int a, *pa, *pb。 pa=amp。a。 pb=pa。 第九章 指針 ? (3)可以給指針賦值 0 指針只能賦給一個(gè)對(duì)象的地址,不能賦給一個(gè)整數(shù),如: int *p。 p=1000。是錯(cuò)誤的 一個(gè)指針加一個(gè)整數(shù)意味著將指針后移;減去一個(gè)整數(shù),意味著前移。例如: p+10 指針后移 (增加 )10個(gè)單元 p++ 指針后移 1個(gè)單元 pn 指針前移 (減少 )n個(gè)單元 p 指針前移 1個(gè)單元 第九章 指針 指向類型相同的兩個(gè)指針可以相減,其結(jié)果是兩個(gè)指針相隔的單元數(shù)。例如,指向同一數(shù)組中兩個(gè)元素的兩個(gè)指針相減,其差表示這兩個(gè)元素在數(shù)組中相差的元素個(gè)數(shù)。 指向同一類型的兩個(gè)指針,可以比較它們的地址值,使用比較運(yùn)算符: > >= < <= ?。? == 比較結(jié)果為 1(真 )或 0(假 ),可用于條件語句和循環(huán)語句中作條件判斷 第九章 指針 ? 指針做函數(shù)參數(shù) ? 函數(shù)的參數(shù)不僅可以是整型、實(shí)型、字符型等數(shù)據(jù),也可以是指針類型 例 用一般變量作參數(shù),不能實(shí)現(xiàn)交換。 include void swap(int,int)。 void main() { int a=5,b=9。 printf(%d,%d\n,a,b)。 swap(a,b)。 printf(%d,%d\n,a,b)。 } 第九章 指針 void swap(int x,int y) { int temp。 temp=x。 x=y。 y=temp。 } 運(yùn)行結(jié)果: 5,9 5,9 第九章 指針 從運(yùn)行結(jié)果看,并沒有實(shí)現(xiàn)兩個(gè)數(shù)值的交換。 原因很清楚,因?yàn)?C語言函數(shù)參數(shù)都是傳值的 (參,例 )。當(dāng)主函數(shù) main()調(diào)用 swap函數(shù)時(shí),只是將實(shí)參 a、 b的值傳送給 swap的形參 x、 y,相當(dāng)于賦值: x=a。y=b。 情況如下圖 (a)所示。 x、 y接收到數(shù)值后,在swap中交換,由于參數(shù)是傳值的, swap中形參 x、y的改變,并不影響到對(duì)應(yīng)的實(shí)參 a、 b,所以形參互換后的結(jié)果如下圖 (b)所示,實(shí)參 a、 b的值并不改變。 第九章 指針 a 5 ( a) 參數(shù)傳遞 b 9 x 5 y 9 a 5 b 9 x 9 y 5 ( b) 形參互換 第九章 指針 例 用指針作參數(shù),實(shí)現(xiàn)兩值的交換。 include void swap(int *,int *)。 void main() { int a=5,b=9。 printf(%d,%d\n,a,b)。 swap(amp。a,amp。b)。 printf(%d,%
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1