



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第C語言詳細(xì)分析講解關(guān)鍵字goto與void的作用目錄一、關(guān)于goto二、void的意義三、小結(jié)
一、關(guān)于goto
高手潛規(guī)則:禁用goto項目經(jīng)驗:程序質(zhì)量與goto的出現(xiàn)次數(shù)成反比最后的判決:將goto打入冷宮
下面看一段goto副作用分析的代碼:
#includestdio.h
#includemalloc.h
voidfunc(intn)
int*p=NULL;
if(n0)
gotoSTATUS;
p=(int*)malloc(sizeof(int)*n);
STATUS:
p[0]=n;
free(p);
intmain()
printf("begin...\n");
printf("func(1)\n");
func(1);
printf("func(-1)\n");
func(-1);
printf("end...\n");
return0;
}
下面為輸出結(jié)果:
這段代碼中當(dāng)func的入口參數(shù)n的值小于0時,就會goto到STATUS那里去執(zhí)行代碼,但是由于跳過了分配內(nèi)存環(huán)節(jié),就不能把n的值賦給p[0],強(qiáng)行賦值就會發(fā)成段錯誤。
二、void的意義
void修飾函數(shù)返回值和參數(shù)
如果函數(shù)沒有返回值,那么應(yīng)該將其聲明為void如果函數(shù)沒有參數(shù),應(yīng)該聲明其參數(shù)為void
void修飾函數(shù)返回值和參數(shù)是為了表示無
下面這段代碼就表示f函數(shù)的輸入?yún)?shù)沒有限制。
不存在void變量
C語言沒有定義void究竟是多大內(nèi)存的別名沒有void的標(biāo)尺無法在內(nèi)存中裁剪出void對應(yīng)的變量
在下面的代碼中,只有void*那條語句可以編譯通過,因為void*指針是合法的。
小貼士
ANSIC:標(biāo)準(zhǔn)C語言的規(guī)范擴(kuò)展C:在ANSIC的基礎(chǔ)上進(jìn)行了擴(kuò)充
上面的代碼在ASNIC編譯器中無法通過編譯,但是對于支持GNU標(biāo)準(zhǔn)的gcc編譯器而言是合法的。
void指針的意義
C語言規(guī)定只有相同類型的指針才可以相互賦值void*指針作為左值用于接收任意類型的指針void*指針作為右值使用時需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換
下面看一段通過void*實現(xiàn)MemSet函數(shù)的代碼:
#includestdio.h
voidMemSet(void*src,intlength,unsignedcharn)
unsignedchar*p=(unsignedchar*)src;
inti=0;
for(i=0;ilength;i++)
p[i]=n;
intmain()
inta[5];
inti=0;
MemSet(a,sizeof(a),0);
for(i=0;ii++)
printf("%d\n",a[i]);
return0;
}
下面為輸出結(jié)果:
void*定義的src表示可以接收任意類型的指針,所以數(shù)組a可以是任意類型。
三、小結(jié)
現(xiàn)代軟件工程中禁用goto語句void是一種抽象的數(shù)據(jù)類型void類型不能
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2026學(xué)年樂業(yè)縣三上數(shù)學(xué)期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 2025-2026學(xué)年江蘇省淮安市淮陰師范學(xué)院第一附屬小學(xué)數(shù)學(xué)三年級第一學(xué)期期末復(fù)習(xí)檢測試題含解析
- 2024年興隆臺區(qū)三上數(shù)學(xué)期末綜合測試模擬試題含解析
- 2024年烏恰縣三上數(shù)學(xué)期末聯(lián)考模擬試題含解析
- 2024年麗江地區(qū)古城區(qū)數(shù)學(xué)三年級第一學(xué)期期末質(zhì)量檢測試題含解析
- 2024年濟(jì)寧市曲阜市數(shù)學(xué)三上期末預(yù)測試題含解析
- 公共營養(yǎng)師二級資格考試-膳食調(diào)查和評價試題大全課件
- 2025年執(zhí)業(yè)藥師考試學(xué)科交叉知識點試題及答案
- 2025年經(jīng)濟(jì)法新變化試題及答案揭曉
- 護(hù)理實習(xí)感想試題及答案總結(jié)
- 獻(xiàn)血法知識試題及答案
- 2025年北京市租賃合同模板
- 高通量透析與血液透析濾過介紹
- 2024年甘肅省臨潭縣事業(yè)單位公開招聘醫(yī)療衛(wèi)生崗筆試題帶答案
- 23G409先張法預(yù)應(yīng)力混凝土管樁
- MOOC 國情分析與商業(yè)設(shè)計-暨南大學(xué) 中國大學(xué)慕課答案
- 第十二講 建設(shè)社會主義生態(tài)文明PPT習(xí)概論2023優(yōu)化版教學(xué)課件
- 【學(xué)習(xí)課件】第七章天然氣處理與輕烴回收
- Thermo Form 311 CO2培養(yǎng)箱中文說明書
- 常用生物化學(xué)檢驗技術(shù)
- 提高鋼管樁接頭焊接質(zhì)量圖文
評論
0/150
提交評論