![值傳遞與地址傳遞(C語(yǔ)言)_第1頁(yè)](http://file4.renrendoc.com/view/1841068f8114ffe0dede51deadfe741f/1841068f8114ffe0dede51deadfe741f1.gif)
![值傳遞與地址傳遞(C語(yǔ)言)_第2頁(yè)](http://file4.renrendoc.com/view/1841068f8114ffe0dede51deadfe741f/1841068f8114ffe0dede51deadfe741f2.gif)
![值傳遞與地址傳遞(C語(yǔ)言)_第3頁(yè)](http://file4.renrendoc.com/view/1841068f8114ffe0dede51deadfe741f/1841068f8114ffe0dede51deadfe741f3.gif)
![值傳遞與地址傳遞(C語(yǔ)言)_第4頁(yè)](http://file4.renrendoc.com/view/1841068f8114ffe0dede51deadfe741f/1841068f8114ffe0dede51deadfe741f4.gif)
![值傳遞與地址傳遞(C語(yǔ)言)_第5頁(yè)](http://file4.renrendoc.com/view/1841068f8114ffe0dede51deadfe741f/1841068f8114ffe0dede51deadfe741f5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、值傳遞與地址傳遞(C語(yǔ)言)、值傳遞/swap.c#includeintmain()inta=20;intb=30;intc=0;printf(ais%d,bis%dn,a,b);c=a;a=b;b=c;printf(now,ais%d,bis%dn,a,b);lxd(alxd-virtuamachinegc匚buildswaplxdlxd-virtual-machine:-/lxz$./build日is20,bis30nov/,ais30,bis20lxdlxdvirtuemachine口思考:兩個(gè)變量交換值,經(jīng)常會(huì)用到,可以把它提煉成一個(gè)函數(shù),供復(fù)用。例2:/swap.c#includevo
2、idswap(inta,intb)intc=0;c=a;a=b;b=c;intmain()inta=20;intb=30;printf(ais%d,bis%dn,a,b);swap(a,b);/將a和b的副本傳遞過(guò)去/函數(shù)調(diào)用完后,swap的空間就出棧了,a和b做的那么多操作也沒(méi)用了printf(now,ais%d,bis%dn,a,b);值傳遞后,a和b的值并沒(méi)有交換成功父換玄b的值swap空間0Oa.b的值不會(huì)改變main空間值傳遞值傳遞:傳遞的只是一份副本。(只是給你看一下)特點(diǎn):調(diào)用者可以保護(hù)自己空間值不被修改。【保護(hù)】缺點(diǎn):因?yàn)槊看握{(diào)用都會(huì)傳遞一份副本,因此內(nèi)存消耗很大,工程中不建議
3、使用。main函數(shù)調(diào)用swap函數(shù),只是告訴swap函數(shù)a和b的值,但是不希望swap函數(shù)對(duì)main函數(shù)內(nèi)的a和b的值進(jìn)行修改。二、地址傳遞例3:/swap.c#includeintmain()voidswap(int*a,int*b)/通過(guò)*讀門牌號(hào)里面的內(nèi)容intc=0;c=*a;*a=*b;*b=c;inta=20;intb=30;printf(ais%d,bis%dn,a,b);swap(&a,&b);/將a和b的門牌號(hào)傳遞過(guò)去printf(now,ais%d,bis%dn,a,b);lxdlxd-virtual-machine:/lxz$gcc-obuildswap匚lxdlxd-v
4、irtual-machine:/lxz$./buildais20,bis30nowrais30,bis20Lxdlxd-virtual-machine:地址傳遞后,a和b的值交換成功了地址傳遞地址傳遞:傳遞的門牌號(hào)特點(diǎn):調(diào)用者讓被調(diào)者修改自己的空間值?!靖摹坑锰?調(diào)用者讓被調(diào)者修改自己的空間值連續(xù)空間的傳遞優(yōu)點(diǎn):不用拷貝副本,可以節(jié)約空間。/scanf函數(shù):inta=0;scanf(%d,a);如果是這樣寫(xiě),屬于值傳遞。當(dāng)鍵盤(pán)輸入值后,a的值仍然不會(huì)改變scanf(%d,&a);如果是這樣寫(xiě),屬于地址傳遞。當(dāng)鍵盤(pán)輸入值后,a的值才會(huì)改變?nèi)?、連續(xù)空間只讀性當(dāng)看到函數(shù)聲明時(shí),能否大概猜出其功能呢?
5、因?yàn)樵诳创a時(shí),函數(shù)非常多,不可能把所有代碼一行一行都讀完。因此要能看到函數(shù)聲明,大體猜測(cè)到其功能。voidfun(chara);/值傳遞。fun函數(shù)只想拿到一個(gè)1字節(jié)/8bit的副本,只是拿來(lái)看一下,不會(huì)去影響調(diào)用者。voidfun(char*b);/地址傳遞。該空間可能會(huì)被修改。voidfun(constchar*b);/地址傳遞。只讀空間,只是看看。/const告訴實(shí)現(xiàn)fun函數(shù)的程序員:fun函數(shù)里面絕對(duì)不能修改門牌號(hào)b的內(nèi)容。/const也告訴調(diào)用fun函數(shù)的程序員:放心大膽地傳遞常量區(qū)的東西吧!不會(huì)出現(xiàn)段錯(cuò)誤的!例4:/004.C#includevoidfun(char*p)p1=
6、2;/只看fun函數(shù),傳遞過(guò)來(lái)一個(gè)指針,是可以對(duì)其內(nèi)容進(jìn)行修改的。但因?yàn)樾薷牡氖浅A繀^(qū)的東西,因此會(huì)出現(xiàn)段錯(cuò)誤intmain()fun(hello);/funf專遞的是常量區(qū)的東西return0;若函數(shù)聲明是voidfun(char*p);時(shí),則看到它的程序員,在實(shí)現(xiàn)時(shí),很可能會(huì)在里面寫(xiě)p1=2;。而且,調(diào)用該函數(shù)時(shí),另一個(gè)程序員很可能會(huì)把hello傳遞出去。因此,很容易出現(xiàn)錯(cuò)誤。lxdlxd-virtual-machine:/lxz$gcc004.c1scdolyd-virtual-mArhine./a.out段齬誤(核心己轉(zhuǎn)儲(chǔ))lxdLxd-virtual-rnachine:/lxz$出現(xiàn)
7、段錯(cuò)誤修改:#includevoidfun(char*p)p1=2;intmain()charbuf=hello;fun(buf);return0;lxdlxd-virtual-machine:/Lxz$gcc004.clxdlxd-virtual-machine:/aoutlxd(aixd-virtual-machine:/lxz$口沒(méi)有錯(cuò)誤1、strccpy/manstrcpychar*strcpy(char*dest,constchar*src);/原地址的內(nèi)容不改變,目的地址的內(nèi)容會(huì)改變!2、spririntf/mansprintf#includeintprintf(constchar*format,.);打打印到屏幕上intfprintf(FILE*stream,constchar*format,.);intsprintf(char*str,constchar*format,.);/打丁印到內(nèi)存中。打印前不能變,打印后,內(nèi)存改變了!intsnprintf(char*str,size_tsize,constchar*format,.);例5:charbuf100;spr
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)境管理在企業(yè)發(fā)展中的作用研究
- 生產(chǎn)流程優(yōu)化基于數(shù)據(jù)的決策支持方案
- 珠寶鑒定與法律法規(guī)關(guān)系解析
- 安保安全措施方案
- 2023九年級(jí)化學(xué)下冊(cè) 第九章 現(xiàn)在生活與化學(xué)9.4 化學(xué)物質(zhì)與健康第3課時(shí) 治病用的藥品、防范有害化學(xué)物質(zhì)、保護(hù)身體健康說(shuō)課稿 科粵版
- Unit1 Making friends Part A Letters and sounds(說(shuō)課稿)-2024-2025學(xué)年人教PEP版(2024)英語(yǔ)三年級(jí)上冊(cè)
- 3 學(xué)習(xí)有方法 說(shuō)課稿-2024-2025學(xué)年道德與法治三年級(jí)上冊(cè)統(tǒng)編版
- Unit 3 Fascinating parks Discover Useful Structures 說(shuō)課稿 -2024-2025學(xué)年高中英語(yǔ)人教版(2019)選擇性必修第一冊(cè)
- 《2 拉拉手交朋友》說(shuō)課稿-2023-2024學(xué)年道德與法治一年級(jí)上冊(cè)統(tǒng)編版
- 2023六年級(jí)數(shù)學(xué)上冊(cè) 三 分?jǐn)?shù)除法 1分?jǐn)?shù)除法第1課時(shí) 倒數(shù)的認(rèn)識(shí)說(shuō)課稿 西師大版
- 小學(xué)六年級(jí)數(shù)學(xué)上冊(cè)《簡(jiǎn)便計(jì)算》練習(xí)題(310題-附答案)
- 2024年河南省《輔警招聘考試必刷500題》考試題庫(kù)及答案【全優(yōu)】
- 地理標(biāo)志培訓(xùn)課件
- 2023行政主管年終工作報(bào)告五篇
- 2024年中國(guó)養(yǎng)老產(chǎn)業(yè)商學(xué)研究報(bào)告-銀發(fā)經(jīng)濟(jì)專題
- 培訓(xùn)如何上好一堂課
- 高教版2023年中職教科書(shū)《語(yǔ)文》(基礎(chǔ)模塊)下冊(cè)教案全冊(cè)
- 人教版英語(yǔ)七年級(jí)上冊(cè)閱讀理解專項(xiàng)訓(xùn)練16篇(含答案)
- 砌墻磚和砌塊檢測(cè)作業(yè)指導(dǎo)書(shū)
- 護(hù)理教學(xué)查房評(píng)分標(biāo)準(zhǔn)
- GB/T 23505-2017石油天然氣工業(yè)鉆機(jī)和修井機(jī)
評(píng)論
0/150
提交評(píng)論