欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
c編程規范
由 onis_man 于 08-11-03 02:22 發(fā)表:

c編程規范(本人的深切體會(huì ))

c編程規范(本人的深切體會(huì ))

真要說(shuō)起來(lái),c的功能是非常強大的,可以說(shuō),匯編能實(shí)現的功能,c都能實(shí)現
除了人們正常使用的功能外,還具有如下功能

a.讀寫(xiě)寄存器
b.讀寫(xiě)端口————因此可直接讀寫(xiě)磁盤(pán)扇區,當然這會(huì )很麻煩,而且在保護模式下,應用
程序好像是無(wú)法執行這些指令的(這點(diǎn)本人記得不是很清楚)至于為什么不能執行,
這不是本文要討論的,有興趣的同仁可以看一下保護模式的文章,就明白了。
c.直接對內存尋址操做————指針可以實(shí)現這個(gè)功能,操作所有的內存空間,當然成功與否
就依賴(lài)于在什么操作系統下了,實(shí)模式下對內存訪(fǎng)問(wèn)沒(méi)有越界保護,所以你在dos下可以
讀寫(xiě)任意地址的內存,這不是本文的重點(diǎn),在此不詳細討論)
d.嵌入匯編(遇到特別講效率的代碼,嵌入匯編不失為一種好辦法)

由于c本身對很多東西都不約束,因此編寫(xiě)c時(shí)必須要有一些規范,尤其是指針的使用。
也正因為如此,很多學(xué)校在開(kāi)設第一門(mén)編程語(yǔ)言課的時(shí)候不開(kāi)c而開(kāi)pascal,不過(guò)本人還
是認為先學(xué)c好。

一。指針的規范
雖然指針提供了一切內存尋址的功能,但是正因為如此,使用的時(shí)候一定要小心。
1.指針定義的時(shí)候一定要初始化
通常情況下,初始化為NULL。
2.指針使用之前要判斷是否為空
3.使用指針指向的內存前要確認該指針指向的內存是可用的
未初始化的指針指向的內存不可用,初始化為NULL的也不可用,或者該指針指向已
定義的變量,或者你為該指針動(dòng)態(tài)分配了內存。
4.為指針動(dòng)態(tài)分配內存后一定要記著(zhù)釋放。
不然這塊內存將會(huì )丟失,本程序用不到,別的也用不了。
5.釋放內存后一定要將該指針置為空。
這是規范,雖然不是必要,但是它可以有效檢測你在釋放過(guò)后還錯誤的使用該指針。
如果操作值為NULL的指針所指向的內存,目前通常的操作系統都會(huì )產(chǎn)生出錯(這屬
于保護模式的范疇)

二。變量局部化的規范
內存單元本身沒(méi)有局部全局的區分,一塊內存在被分配后均可以使用,但是變量的
概念不同于內存的概念,正常函數內定義的變量均置在棧內(什么是棧,在此不詳
細討論),而什么時(shí)候如何為這個(gè)變量分配棧的空間,這不是我們要做的事,編譯
器幫我們完成了這件事,所以變量的生存期是編譯器為了編程的方便所規定出來(lái)的
概念,不然一段代碼亂糟糟的象匯編一樣,做程序員的豈不是大費心力。

軟件工程有一項理論,就是緊內聚,松耦合,用于這兒的概念就是變量越局部越好,
最好全局的變量一個(gè)都沒(méi)有,每個(gè)函數都只管傳入的參數和返回值。當然要是沒(méi)有任何
全局的信息,對于程序來(lái)說(shuō),可能還會(huì )造成很多不方便,也會(huì )導致函數的參數過(guò)多。所以
怎么來(lái)把握這個(gè)度,這個(gè)是程序員的經(jīng)驗問(wèn)題。

基于局部化全局化的概念,變量分為如下三種
1。函數內局部變量:函數內使用
2。文件內局部變量:文件內的所有函數均可使用
3。程序的全局變量:所有本程序的文件均可使用(同上一種比較,只是在頭文件中多了
extern的聲明)
同樣函數也存在這么幾種
1。文件內的函數
2。程序的全局函數(同上一種比較,只是在頭文件內多了該函數的原型,包含了該頭
文件的文件當然就可以使用這個(gè)函數樂(lè ))

三。項目的規范
要把程序做大,在單個(gè)文件內實(shí)現是不現實(shí)的,必須使用多個(gè)文件,然后鏈接成最終的可
執行程序。
1。每項功能對應一個(gè).c文件,而每個(gè).c文件對應一個(gè)同名的.h文件,第二個(gè).c文件想使用
第一個(gè).c文件定義的全局變量,全局函數等,必須包含第一個(gè)的.h文件,這是規范,多數人
都是這么做的,當然不這么編也沒(méi)人攔你,不過(guò)這是很多人的經(jīng)驗。
2。防止頭文件的重包含
頭文件內通常定義一些類(lèi)型、結構等,如果被包含多次,將會(huì )出現類(lèi)型重復定義的錯誤,所以
通常使用預編譯來(lái)避免這一條,形式如下:
#ifndefine _MYPROGRAM_H_
#define _MYPROGRAM_H_
/* you code */
#endif
需要在.h文件頭尾加上這么幾句話(huà)。雖然這個(gè)很簡(jiǎn)單,但是在實(shí)際生活中,我經(jīng)??吹接腥瞬?br>知道這一點(diǎn),似乎很多書(shū)上也沒(méi)有提到,所以在這兒說(shuō)明一下。

四。程序編寫(xiě)的格式規范
這也是很重要的一方面,程序代碼的好壞很重要的一方面就是易維護性。所以格式一定要標準,
讓人人都能看懂,自己也看得明白。這方面我不多說(shuō)了,大家在看源代碼的過(guò)程中很容易就能
學(xué)到。


這些都是c的基本規范,很多規范可以不遵從,但是顯然遵從了會(huì )有很多好處。不管你在什么開(kāi)發(fā)
環(huán)境下,我想這些規范都是一個(gè)初學(xué)者應當遵守的。高手咱規范不了:)。暫時(shí)只能想起來(lái)這些東西
,以后說(shuō)不定還會(huì )有一些。


此文系本人嘔心瀝血所做(

,為了c的大業(yè)),高手看了千萬(wàn)不要扔柿子,有什么不對的告訴我,
我也好有則改之,無(wú)則加勉


由 diudiu 于 08-11-03 22:01 發(fā)表:

鼓勵,支持你。兄弟



謝謝大家對丟丟個(gè)人站點(diǎn)的支持:
http://www.diudiu.net

致力于C /C++技術(shù)討論


由 巴豆 于 08-12-03 13:31 發(fā)表:

指針,該死的指針,可是不得不學(xué)呀




別做程序了,給你們一個(gè)賺錢(qián)的秘訣,做豆腐,做硬了賣(mài)豆腐干,做稀了賣(mài)豆腐花,太稀了賣(mài)豆漿,豆腐賣(mài)不動(dòng)了放幾天賣(mài)臭豆腐,還賣(mài)不動(dòng)就放壞了賣(mài)腐乳!


由 diudiu 于 08-12-03 14:05 發(fā)表:

還可以阿,開(kāi)始有點(diǎn)麻煩。等入門(mén)了,就習慣,喜歡它了。。



謝謝大家對丟丟個(gè)人站點(diǎn)的支持:
http://www.diudiu.net

致力于C /C++技術(shù)討論


由 hqwjun 于 08-15-03 18:04 發(fā)表:

支持你



擁有你是我最大的幸福


由 homer 于 09-07-03 06:15 發(fā)表:

支持一下....

個(gè)人認為在指針應用方面我還是比較自覺(jué)的。呵呵。

關(guān)于重包含的問(wèn)題還真從來(lái)沒(méi)有注意過(guò)。


由 smcree 于 09-22-03 18:59 發(fā)表:

支持你


由 sadly 于 09-24-03 16:34 發(fā)表:

支持一下~



搶劫中國銀行 實(shí)現心中理想

QQ:824008 ICQ:2896699 MSN:goodyork@hotmail.com


由 jx123jx123 于 10-08-03 00:34 發(fā)表:

支持

寫(xiě)的好

我是從basic轉而學(xué)c的
對指針的體會(huì )最深
干開(kāi)始學(xué)的時(shí)候好痛苦


老是用錯
現在對了
感覺(jué)指針好好用喲


永遠的westwood?。?!


由 tellmewhy 于 11-16-03 20:51 發(fā)表:

我也支持一下,雖然是很舊的帖子了!



There is nothing permanent except change.


由 htll 于 11-30-03 06:55 發(fā)表:

指針真是個(gè)好東西呀??!


由 wangfeng_1981 于 12-10-03 02:10 發(fā)表:

關(guān)于 "防止頭文件的重包含" 的一點(diǎn)看法!

我覺(jué)得 預編譯應該包含 頭文件,而不是代碼!

#ifndefine _HEADERFILE_H_
#define _HEADERFILE_H_

#include("headerfile.h")
....

#endif

如果說(shuō)得不正確,請指正!



==饑渴稚嫩的腦袋!


由 日出東方XP 于 12-15-03 19:12 發(fā)表:

指針----內存地址也。



希望直接打印的,希望打開(kāi)網(wǎng)頁(yè)后全屏顯示的,希望點(diǎn)了按鈕后直接退出瀏覽器的進(jìn)來(lái),希望設置客戶(hù)端分辨率的進(jìn)來(lái)
永遠愛(ài)你—— 東河頭村——生我養我的地方
永遠愛(ài)你—— 石家莊——我生活的地方
永遠愛(ài)你—— 河北經(jīng)貿大學(xué)——我成長(cháng)、我起步的地方


由 onis_man 于 12-28-03 22:42 發(fā)表:

Re: 關(guān)于 "防止頭文件的重包含" 的一點(diǎn)看法!

quote:
最初由 wangfeng_1981 發(fā)布
我覺(jué)得 預編譯應該包含 頭文件,而不是代碼!

#ifndefine _HEADERFILE_H_
#define _HEADERFILE_H_

#include("headerfile.h")
....

#endif

如果說(shuō)得不正確,請指正!



不太清楚你說(shuō)的什么意思,預編譯是正式編譯之前執行的一次編譯,生成目標文件,正式編譯對預編譯生成的目標文件再次進(jìn)行編譯,通過(guò)預編譯,不僅可以防止這種重包含問(wèn)題,而且還可以編寫(xiě)release和debug的不同類(lèi)的二進(jìn)制文件,例如
#ifdefine DEBUG
debug code
#endif
這樣如果編譯release版本,debug code在預編譯生成的目標文件里不會(huì )有,精簡(jiǎn)了最終生成的二進(jìn)制文件的大小。
除此以外,預編譯也經(jīng)常用來(lái)進(jìn)行跨平臺程序的編寫(xiě),例如

#ifdefine _IA64_
intel 64位平臺下運行的代碼
#endif

#ifdefine _BSD_
unix BSD系統下運行的代碼
#endif


由 plusKid 于 03-16-04 22:33 發(fā)表:

hehe!

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
VFP常用命令詳解
VFP命令全集_知識交流
Debug與Release版本的區別
DLL入門(mén)淺析
QT4(C++)兩個(gè)頭文件相互包含(類(lèi)超前引用)
預處理概述
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久