第一篇:C語言編程總結(jié)--程序員必須知道的77條編程細(xì)節(jié)
C語言編程總結(jié)--程序員必須知道的77條編程細(xì)節(jié)
分類: C語言學(xué)習(xí)心得體會 2010-08-08 19:33 63人閱讀 評論(1)收藏 舉報
轉(zhuǎn)載請注明出處:http://blog.csdn.net/ecorefeng
在編程過程中會遇到各種各樣的錯誤與警告,這里我對編程過程中經(jīng)常遇到的細(xì)節(jié)或者說常出錯的地方進(jìn)行了簡單的總結(jié),希望對正在編程的“童鞋”有所幫助:
C語言編程提示的總結(jié):
1:使用 #include 指令避免重復(fù)聲明
2:使用 #define 指令給常量值取名
3:在 #include 文件中放置函數(shù)原型
4:在使用下標(biāo)前先檢查它們的值
5:在 while 或 if 表達(dá)式中蘊(yùn)含賦值操作
6:如何編寫一個空循環(huán)體
7:始終要進(jìn)行檢查,確保數(shù)組不越界
8:良好的程序風(fēng)格和文檔將使程序容易閱讀和維護(hù)
9:為了保持最佳的可移植性,把字符的值限制在有符號和無符號字符范圍的交集之內(nèi),或者不要在字符上執(zhí)行算術(shù)運算
10:用它們在使用時最自然的形式來表示字面值
11:不要把整型值和枚舉值混在一起使用
12:不要依賴隱式聲明
13:在定義類型的新名字時,使用 typedef 而不是 #define
14:用 const 聲明其值不會修改的變量
15:使用名字常量而不是字面值常量
16:不要在嵌套的代碼塊之間使用相同的變量名
17:在一個沒有循環(huán)體的循環(huán)中,用一個分號表示空語句,并讓它獨占一行
18: for 循環(huán)的可讀行比 while 循環(huán)強(qiáng),因為它把用于控制循環(huán)的表達(dá)式收集起來放在一個地方
19:在每個 switch 語句中都使用 default 子句
20:使用符號賦值符可以使用程序更容易維護(hù)
21:使用條件操作符代替 if 語句以簡化表達(dá)式
22:使用逗號操作符來消除多余的代碼
23:不要混用整型和布爾型值
24:一個值應(yīng)該只具一種意思
25:如果指針并不指向任何有意義的東西,使它非法地指向了數(shù)組第 1 個元素的前面的內(nèi)存位置
26:在函數(shù)原型中使用參數(shù)名,可以給使用該函數(shù)的用戶提供更多的信息
27:抽象數(shù)據(jù)類型可以減少程序?qū)δK實現(xiàn)細(xì)節(jié)的依賴,從而提高程序的可靠性
28:當(dāng)遞歸定義清晰地優(yōu)點可以補(bǔ)償它的效率開銷時,就可以使用這個工具
29:一開始就編寫良好的代碼顯然比依賴編譯器來修正劣質(zhì)代碼更好
30:源代碼的可讀性機(jī)會總是比程序的運行時效率更為重要
31:只要有可能,函數(shù)的指針參都應(yīng)該聲明為 const
32:在有些環(huán)境中,使用 register 關(guān)鍵字提高程序的運行時效率
33:在多維數(shù)組的初始值列表中使用完整的多層花括號能提高可讀性
34:不要試圖自己編寫功能相同的函數(shù)來取代庫函數(shù)
35:使用字符分類和轉(zhuǎn)換函數(shù)可以提高函數(shù)的移植性
36:把結(jié)構(gòu)標(biāo)簽聲明和結(jié)構(gòu)的 typedef 聲明放在頭文件中,當(dāng)源文件需要這些聲明時可以通過 #include 指令把它們包含進(jìn)來
37::結(jié)構(gòu)成員的最佳排列形式并不一定就是考慮邊界對齊而浪費空間最少的那種排列形式
38:把位段成員顯示地聲明為 signed in 或 unsigned 類型
39:位段是不可移植的40:位段時源代碼中位的操作表達(dá)得更為清楚
41:動態(tài)內(nèi)存分配有助于消除程序內(nèi)部存在的限制
42:使用 sizeof 計算數(shù)據(jù)類型的長度,提高程序的可移植性
43:消除特殊情況使代碼更容易維護(hù)
44:通過鍛煉語句消除 if 語句中的重復(fù)語句
45:不要僅僅根據(jù)代碼的大小評估它的質(zhì)量
46:如果并非必要,避免使用多層間接訪問
47: cdecl 程序可以幫助你分析復(fù)雜的聲明
48:把 void* 強(qiáng)制轉(zhuǎn)換為其他類型的指針時必須小心
49:使用轉(zhuǎn)移表時,應(yīng)始終驗證下標(biāo)的有效性
50:破壞性的命令行參數(shù)處理方式使你以后無法再進(jìn)行處理
51:不尋常的代碼始終應(yīng)該加上一條注釋,描述它的目的和原理
52:避免用 #define 指令定義可以用函數(shù)實現(xiàn)的很長序列的代碼
53:在那些對表達(dá)式求值的宏中,每個宏參數(shù)出現(xiàn)的地方都應(yīng)該加上括號,并且在整個宏定義的兩邊也加上括號
54:避免使用 #define 宏創(chuàng)建一種新語言
55:采用命名約定,使程序員很容易看出某個標(biāo)識符是否為 #define 宏
56:只要合適就應(yīng)該使用文件包含,不比擔(dān)心它的額外開銷
57:頭文件只應(yīng)該包含一組函數(shù)和(或)數(shù)據(jù)的聲明
58:把不同集合的聲明分離到不同的頭文件中可以改善信息隱藏
59:嵌套的 #include 文件使我們很難判斷源文件之間的依賴關(guān)系
60:在可能出現(xiàn)錯誤的場合,檢查并報告錯誤
61:操縱文本行而無需顧及它們的外部標(biāo)識形式,這個能力有助于提高程序的可移植性
62:使用 scanf 限定提高可移植性
63:當(dāng)你打印長整數(shù)時,即使你所使用的機(jī)器并不需要,堅持使用 1 修改符可以提高可移植性
64:濫用 setjmp 和 longjmp 可能導(dǎo)致晦澀難懂的代碼
65:對信號進(jìn)行處理將導(dǎo)致程序的可移植性變差
66:使用斷言可以簡化程序的調(diào)試
67:避免使用具有副作用的函數(shù)可以使程序更容易理解
68:一個模塊的接口應(yīng)該避免暴漏它的細(xì)節(jié)
69:將數(shù)據(jù)類型參數(shù)化,是它更容易修改
70:只有模塊對外公布的接口才應(yīng)該是公用的71:使用斷言來防止非法操作
72:幾個不同的實現(xiàn)使用同一個通用接口是模塊具有更強(qiáng)的可互換性
73:復(fù)用現(xiàn)存的代碼而不是對它進(jìn)行改寫
74:迭代比尾部遞歸效率更高
75使用 stdarg 實現(xiàn)可變參數(shù)列表
76:改進(jìn)算法比優(yōu)化代碼更有效率
77:使用某種環(huán)境特有的技巧會導(dǎo)致程序不可移植
--end--
第二篇:C語言C++程序員編程必備
Java,NET,PHP,Ruby,Perl 和 Python 等,但今天我們要討論的是兩個最古老和流行的語言的C和C++。它們都有其特殊的地方,更有效的功能和支持的工具,這兩種語言仍然很活躍。
今天我們整理了一些令人印象深刻的IDE(集成開發(fā)環(huán)境)和編譯器推薦給 C 和 C++ 程序員。集成開發(fā)環(huán)境,主要用于提供軟件應(yīng)用的各種組件而開發(fā)的,其中最流行的功能是它們都有吸引力的用戶界面。1)Best IDE for C/C++ – kDevelop KDevelop 是基于 KDevPlatform 的可使用開源插件擴(kuò)展的 IDE。KDevPlatform 是一種可以用來作為 IDE 的基礎(chǔ)庫的開源集。
2)Best IDE for C/C++-Anjuta Anjuta Devstudio 具有先進(jìn)的編程工具,包括項目管理,應(yīng)用程序向?qū)В换ナ秸{(diào)試器,源代碼編輯器,版本控制,GUI設(shè)計器,分析器和許多工具,另一個偉大的開發(fā)工作室。此工具提供的 C/C++ 程序員有很大強(qiáng)大的用戶界面開發(fā)接口。
3)Best IDE for C/C++Eclipse CDT Eclipse CD 是最強(qiáng)大和最流行的IDE之一,提供了更高效的功能,如:項目的創(chuàng)建和管理,構(gòu)建支持不同的工具鏈,標(biāo)準(zhǔn)make編譯,源代碼導(dǎo)航,各種來源的知識工具,代碼編輯器,語法高亮,折疊和超鏈接導(dǎo)航,源代碼重構(gòu)和代碼生成,可視化調(diào)試工具,包括內(nèi)存,寄存器等等。
7)Best IDE for C/C++ – Compilr Compilr 是在線集成開發(fā)工具,讓您與令人印象深刻的功能和簡單的用戶界面編寫代碼。該工具支持的編程語言中廣泛的C,C + + JAVA,HTML等等。
8)Best IDE for C/C++Netbeans C++ Netbeans 的工具包括許多適合 C 和 C++ 項目類型模板,可以 使用動態(tài)庫和靜態(tài)創(chuàng)建 C/C++ 應(yīng)用程序庫。它擁有迷人的功能:代碼協(xié)助,編譯器配置,單元測試,源檢查,遠(yuǎn)程開發(fā)和文件導(dǎo)航等等。
10)Best IDE/Compiler for C/C++Ultimate++ Ultimate++是對于 C++ 程序員來說是很好框架。這個 IDE 引入了模塊化概念,可以結(jié)合 GCC,MinGW 和 Visual C++。
12)Best Compiler for C/C++-Digital Mars DigitalMars 是一款高性能的 C/C++ 編譯器。包括的功能,如速度最快的編譯/鏈接時,強(qiáng)
HTML文檔,反匯編,圖書管理員,資源編譯器,make等,命令行和GUI版本,教程,代碼示例,在線更新,標(biāo)準(zhǔn)模板庫等等。
13)Best IDE for C-C-Free
14)Best Compiler for C/C++ – MinGW MinGW 編譯器提供訪問微軟的C運行庫和一些特定語言運行庫的功能。
15)Best Compiler for C – Tiny C Compiler iny C Compiler 是最好的編譯器之一,讓開發(fā)人員可以在任何地方編譯代碼,可以使用任何 C 動態(tài)庫,編譯并直接執(zhí)行C++源程序,也包含完整的 C 預(yù)處理器和 GNU 匯編器。
@扣丁學(xué)堂 智悅分享
第三篇:編程規(guī)范(程序員必看)
編程規(guī)范(程序員必看)
作者:
評價:
上站日期:
內(nèi)容說明:
來源:
.基本要求
1.1 程序結(jié)構(gòu)清析,簡單易懂,單個函數(shù)的程序行數(shù)不得超過100行。1.2 打算干什么,要簡單,直接了當(dāng),代碼精簡,避免垃圾程序。1.3 盡量使用標(biāo)準(zhǔn)庫函數(shù)和公共函數(shù)。
1.4 不要隨意定義全局變量,盡量使用局部變量。1.5 使用括號以避免二義性。
2.可讀性要求
2.1 可讀性第一,效率第二。2.2 保持注釋與代碼完全一致。
2.3 每個源程序文件,都有文件頭說明,說明規(guī)格見規(guī)范。2.4 每個函數(shù),都有函數(shù)頭說明,說明規(guī)格見規(guī)范。
2.5 主要變量(結(jié)構(gòu)、聯(lián)合、類或?qū)ο螅┒x或引用時,注釋能反映其含義。2.7 常量定義(DEFINE)有相應(yīng)說明。2.8 處理過程的每個階段都有相關(guān)注釋說明。2.9 在典型算法前都有注釋。
2.10 利用縮進(jìn)來顯示程序的邏輯結(jié)構(gòu),縮進(jìn)量一致并以Tab鍵為單位,定義Tab為 6個字節(jié)。
2.11 循環(huán)、分支層次不要超過五層。
2.12 注釋可以與語句在同一行,也可以在上行。2.13 空行和空白字符也是一種特殊注釋。2.14 一目了然的語句不加注釋。
2.15 注釋的作用范圍可以為:定義、引用、條件分支以及一段代碼。2.16 注釋行數(shù)(不包括程序頭和函數(shù)頭說明部份)應(yīng)占總行數(shù)的 1/5 到 1/3。
3.結(jié)構(gòu)化要求
3.1 禁止出現(xiàn)兩條等價的支路。3.2 禁止GOTO語句。
3.3 用 IF 語句來強(qiáng)調(diào)只執(zhí)行兩組語句中的一組。禁止 ELSE GOTO 和 ELSE RETURN。3.4 用 CASE 實現(xiàn)多路分支。3.5 避免從循環(huán)引出多個出口。3.6 函數(shù)只有一個出口。3.7 不使用條件賦值語句。3.8 避免不必要的分支。
3.9 不要輕易用條件分支去替換邏輯表達(dá)式。
4.正確性與容錯性要求
4.1 程序首先是正確,其次是優(yōu)美
4.2 無法證明你的程序沒有錯誤,因此在編寫完一段程序后,應(yīng)先回頭檢查。4.3 改一個錯誤時可能產(chǎn)生新的錯誤,因此在修改前首先考慮對其它程序的影響。4.4 所有變量在調(diào)用前必須被初始化。4.5 對所有的用戶輸入,必須進(jìn)行合法性檢查。4.6 不要比較浮點數(shù)的相等,如: 10.0 * 0.1 == 1.0,不可靠
4.7 程序與環(huán)境或狀態(tài)發(fā)生關(guān)系時,必須主動去處理發(fā)生的意外事件,如文件能否 邏輯鎖定、打印機(jī)是否聯(lián)機(jī)等。
4.8 單元測試也是編程的一部份,提交聯(lián)調(diào)測試的程序必須通過單元測試。
5.可重用性要求
5.1 重復(fù)使用的完成相對獨立功能的算法或代碼應(yīng)抽象為公共控件或類。5.2 公共控件或類應(yīng)考慮OO思想,減少外界聯(lián)系,考慮獨立性或封裝性。5.3 公共控件或類應(yīng)建立使用模板。
附:C++ 編程規(guī)范,delphi作相應(yīng)的參考
.1適用范圍
本標(biāo)準(zhǔn)適用于利用Visul C++ ,Borland C++進(jìn)行軟件程序開發(fā)的人員.。
.2變量命名
命名必須具有一定的實際意義,形式為xAbcFgh,x由變量類型確定,Abc、Fgh表示連續(xù)意 義字符串,如果連續(xù)意義字符串僅兩個,可都大寫.如OK.具體例程:
BOOL類型
bEnable;
ch
*
char
chText c
*
類對象
cMain(對象實例)h
*
Handle(句柄)
hWnd i
*
int n
*
無符號整型 p
*
指針 sz,str *
字符串 w
WORD x,y
坐標(biāo)
Char或者TCHAR類型
與Windows API有直接聯(lián)系的用szAppName[10]形式否則用
FileName[10]形式,單個字符也可用小寫字母表示;
Int類型
nCmdShow;
LONG類型
lParam;UINT類型
uNotify;
DWORD類型
dwStart;
PSTR類型
pszTip;
LPSTR類型
LPTSTR類型
LPVOID類型
WPARAM類型
LPARAM類型
HWND類型
HDC類型
HINSTANCE類型
HANDLE類型
HICON類型
int
float
DWORD
lpszClassName;lpReserved wParam, lParam hDlg;hDC;hInstance hInstance, hIcon;iTmp fTmp dw* 4
lpCmdLine
String , AnsiString
str *
m_
類成員變量
m_nVal, m_bFlag g_
全局變量
g_nMsg, g_bFlag
局部變量中可采用如下幾個通用變量:nTemp,nResult,I,J(一般用于循環(huán)變量)。
其他資源句柄同上
.3常量命名和宏定義
常量和宏定義必須具有一定的實際意義;
常量和宏定義在#include和函數(shù)定義之間;
常量和宏定義必須全部以大寫字母來撰寫,中間可根據(jù)意義的連續(xù)性用下劃線連接,每一 條定義的右側(cè)必須有一簡單的注釋,說明其作用;
資源名字定義格式:
菜單:IDM_XX或者CM_XX
位圖:IDB_XX
對話框:IDD_XX
字符串:IDS_XX
DLGINIT:DIALOG_XX
ICON:IDR_XX
.4函數(shù)命名 函數(shù)原型說明包括引用外來函數(shù)及內(nèi)部函數(shù),外部引用必須在右側(cè)注明函數(shù)來源: 模 塊名及文件名, 如是內(nèi)部函數(shù),只要注釋其定義文件名;
第一個字母必須使用大寫字母,要求用大小寫字母組合規(guī)范函數(shù)命名,必要時可用下劃線 間隔,示例如下:
void UpdateDB_Tfgd(TRACK_NAME);
//Module Name :r01/sdw.c
void PrintTrackData(TRACK_NAME);//Module Name :r04/tern.c
void ImportantPoint(void);
//Module Name :r01/sdw.c
void ShowChar(int , int , chtype);
//Local Module
void ScrollUp_V(int , int);
//Local Module
.5結(jié)構(gòu)體命名
結(jié)構(gòu)體類型命名必須全部用大寫字母,原則上前面以下劃線開始;結(jié)構(gòu)體變量命名必須用 大小寫字母組合,第一個字母必須使用大寫字母,必要時可用下劃線間隔。對于私有數(shù) 據(jù)區(qū),必須注明其所屬的進(jìn)程。全局?jǐn)?shù)據(jù)定義只需注意其用途。
示例如下:
typedef struct
{
char
szProductName[20];
char
szAuthor[20];
char
szReleaseDate[16];
char
szVersion[10];
unsigned long
MaxTables;
unsigned long
UsedTables;
}DBS_DATABASE;
DBS_DATABASE GdataBase;
控件的命名: 用小寫前綴表示類別
用小寫前綴表示類別: fm
窗口 cmd
按鈕
cob
combo,下拉式列表框 txt
文本輸入框 lab
labal,標(biāo)簽 img
image,圖象 pic
picture grd
Grid,網(wǎng)格 scr
滾動條 lst
列表框 frm
fram
7注釋
原則上注釋要求使用中文;
文件開始注釋內(nèi)容包括:公司名稱、版權(quán)、作者名稱、時間、模塊用途、背景介紹等,復(fù) 雜的算法需要加上流程說明;
函數(shù)注釋包括:輸入、輸出、函數(shù)描述、流程處理、全局變量、調(diào)用樣例等,復(fù)雜的函數(shù) 需要加上變量用途說明;
程序中注釋包括:修改時間和作者、方便理解的注釋等;
引用一: 文件開頭的注釋模板
/******************************************************************
** 文件名:
** Copyright(c)1998-1999 *********公司技術(shù)開發(fā)部
** 創(chuàng)建人:
** 日 期:
** 修改人:
** 日 期:
** 描 述: ** ** 版 本:
**---------------
******************************************************************/
引用二: 函數(shù)開頭的注釋模板
/*****************************************************************
** 函數(shù)名:
** 輸 入: a,b,c
**
a---
**
b---
**
c---
** 輸 出: x---
**
x 為 1, 表示...**
x 為 0, 表示...** 功能描述:
** 全局變量:
** 調(diào)用模塊:
** 作 者:
** 日 期:
** 修 改:
** 日 期: ** 版本
****************************************************************/
引用三: 程序中的注釋模板
/*---------------------------*/
/* 注釋內(nèi)容
*/
/*---------------------------*/ 8 程序
a.程序編碼力求簡潔,結(jié)構(gòu)清晰,避免太多的分支結(jié)構(gòu)及太過于技巧性的程序,盡量不采用遞歸模式。
b.編寫程序時,亦必須想好測試的方法,換句話說,”單元測試” 的測試方案應(yīng) 在程序編寫時一并擬好。
c.注釋一定要與程序一致。
d.版本封存以后的修改一定要將老語句用/* */ 封閉,不能自行刪除或修改,并要 在文件及函數(shù)的修改記錄中加以記錄。
e.程序中每個block 的開頭 ”{“ 及 ”}” 必須對齊,嵌套的block 每進(jìn)一套,縮進(jìn)一個tab,TAB 為4個空格,block類型包括if、for、while、do等關(guān)鍵字引出的。
f.對于比較大的函數(shù),每個block 和特殊的函數(shù)調(diào)用,都必須注明其功能,舉例如下
:
count.divisor = 1193280 / freq;
// compute the proper count
OutByte((unsigned short)67,(unsigned char)182);// tell 8253 that a count is coming
OutByte((unsigned short)66, count.c[0]);
// send low-order byte
OutByte((unsigned short)66, count.c[1]);
// send high-order byte
×××××××××××××××××××××××××××××××××××××××
bcb,delphi中的變量命名:
遵循匈牙利命名法,命 名必須有意義,制定如下規(guī)定
窗體: 以大寫的W開始,如About版權(quán)窗體,命名為WAbout
文件:以大寫的F開始,如About版權(quán)窗體,文件命名為FAbout.cpp
按鈕(Button):如退出按鈕,命名為btnExit ……
基類: 加base標(biāo)記,如報表基類,窗體命名為:WBaseRep, 文件命名為FBaseRep.cpp
第四篇:C語言編程
#include(stdio.h)
main()
{ int question[4]={-1,-1,-1,-1},i=0,j=0,k=0,A=0,B=0,answer[4]={0};
char again='y';
while(again=='y'){ srand((int)time(0));
while(i4){ k=(int)rand()%10;
for(j=0;ji;j++)if(k==question[j]){ k=-1;break;}
if(k==-1)continue;question[i]=k;i++;}/*while i*/
for(i=8;i0;i--)/*還有8次機(jī)會*/
{ A=0;B=0;printf(“n你還剩下%d次機(jī)會?!?i);
printf(“n請輸入四個0-9之間的數(shù)字,中間用空格隔開n”);for(j=0;j4;j++)scanf(“%d”,&answer[j]);
for(j=0;j4;j++)
for(k=0;k4;k++)
{ if(answer[j]==question[k]){ if(j==k)A++;else B++;} }/*for*/
if(A==4){ again='0';
printf(“n你贏了,還繼續(xù)猜嗎?(y/n)”);
while(again!='y'&&again!='n')
scanf(“...%c”,&again);break;}/*if*/
printf(“n%dA%dB”,A,B);if(i==1){ again='0';
printf(“n你輸了,正確答案是”);
for(j=0;j4;j++)
printf(“%dt”,question[j]);
printf(“n還繼續(xù)嗎?(y/n)”);
while(again!='y'&&again!='n')scanf(“%c”,&again);
printf(“%c”,again);break;}/*if*/ }/*for changce*/ }/*while again*/ printf(“感謝您玩這個游戲?!?;}
第五篇:編程語言學(xué)習(xí)心得
程序語言學(xué)習(xí)的總結(jié)
通過兩年的學(xué)習(xí),我們基本上掌握了C語言,C++和C#三個編程課程。對于程序設(shè)計語言的學(xué)習(xí),分為學(xué)習(xí)語法規(guī)定、掌握程序設(shè)計方法、提高程序開發(fā)能力,這些都必須通過充分的實際上機(jī)操作才能完成。課程上的安排除了課堂講授以外,學(xué)院設(shè)有專門課堂到實驗室進(jìn)行上機(jī)操作實驗。
要利用c語言學(xué)到的知識編寫c語言程序,即把c語言作為工具,通過上機(jī)才能檢驗自己是否掌握c語言、自己編寫的程序是否能夠正確地解題。通過上機(jī)實驗來驗證自己編制的程序是否正確。在這種思想支配下,可能你會想辦法去“掩蓋”程序中的錯誤,而不是盡可能多地發(fā)現(xiàn)程序中存在的問題。自己編好程序上機(jī)調(diào)試運行時,可能有很多你想不到的情況發(fā)生,通過解決這些問題,可以逐步提高自己對c語言的理解和程序開發(fā)能力。
在原有的C語言的基礎(chǔ)知識之上,初步接觸C++時感到比較簡單易懂。但隨著之后的步步深入學(xué)習(xí),C++的不同之處以及其優(yōu)勢逐。從第二章引入了C++簡單程序的設(shè)計。包括一些C++語言的概述,基本數(shù)據(jù)類型和表達(dá)式,數(shù)據(jù)的輸入與輸出,算法的基本東芝結(jié)構(gòu),以及自定義類型數(shù)據(jù)等知識。此部分多與C語言相似。之后又學(xué)習(xí)了函數(shù)的相關(guān)內(nèi)容,這里學(xué)到了新的知識要點----函數(shù)重載。該內(nèi)容尤其在現(xiàn)在做課程設(shè)計的時候尤為重要。類是C++語言的精華之所在,在學(xué)習(xí)中,我感覺到類和C語言中的結(jié)構(gòu)體有很大的相似之處,但在類中的構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)以及類的組合,經(jīng)常弄混淆一些概念。在這之后又學(xué)習(xí)了類的繼承與派生。這使得類與類之間形成了樹狀圖的模型,各子類可以訪問到父類的一些數(shù)據(jù)成員,同樣也實現(xiàn)了數(shù)據(jù)的之間的“共享”。我個人在編寫派生類的構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù)時,感覺很不熟練,后面章節(jié)的多態(tài)性主要學(xué)習(xí)了運算符的重載,其本質(zhì)就是函數(shù)的重載。
在學(xué)習(xí)C#中,類是具有相同特性和行為的對象的抽象。它使用關(guān)鍵字class聲明的。在c#中僅允許單個繼承,類只能從一個基類繼承實現(xiàn)。但是一個類可以實現(xiàn)一個以上的接口。對象是人們要進(jìn)行研究的任何事物,從最簡單的整數(shù)到復(fù)雜的飛機(jī)等局可以看對象,它不僅表示具體的事物,還能表示抽象的規(guī)則、計劃或者事件。接口只是包含方法、委托或事件的簽名。方法的實現(xiàn)是在實現(xiàn)接口的類中完成的。接口可以是命名空間或類的成員,并可以包含下列成員:每個C#可執(zhí)行文件都有一個入口—Main方法:static void Main()修飾符public表示可以在任何地方訪問該方法。所以可以在類的外部調(diào)用它。修飾符static表示方法不能在類的實例上執(zhí)行,因此不必先實例化類在調(diào)用。在變量聲明時:變量是類或者結(jié)構(gòu)中的字段,如果沒有顯示初始化,創(chuàng)建這些變量時,其值就是默認(rèn)的0。變量是方法的局部變量就必須在代碼中顯示初始化,之后才能在語句中使用它們的值。
課堂上要講授許多關(guān)于語法規(guī)則,要使用這些工具解決問題,通過多次上機(jī)練習(xí),對于語法知識有了更深刻的認(rèn)識,在理解的基礎(chǔ)上就會自然而然地掌握。一個程序從編輯、編譯、連接到運行,都要在一定的外部操作環(huán)境下才能進(jìn)行。通過上機(jī)實驗,熟練地掌握開發(fā)環(huán)境,為以后真正編寫計算機(jī)程序解決實際問題打下基礎(chǔ)。