第一篇:C、C++總結(jié)
1、類:類是一種抽象的數(shù)據(jù)結(jié)構(gòu),用來描述對象的屬性,是將不同數(shù)據(jù)類型的數(shù)據(jù)以及與這些數(shù)據(jù)相關(guān)的操作封裝在一起的集合體。(封裝性)
一個(gè)類的對象所占空間的大小由它的數(shù)據(jù)成員所占據(jù)的空間總和決定;當(dāng)類有virtual函數(shù)時(shí),再加上4個(gè)字節(jié)的大小。
2、面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)的不同:
(1)過程是基于算法的,而對象是基于類的;
(2)過程是以函數(shù)(過程)的設(shè)計(jì)來實(shí)現(xiàn)的,而對象是以類的設(shè)計(jì)來實(shí)現(xiàn)的;
(3)過程通過數(shù)據(jù)流圖(流程圖)來體現(xiàn)的,而對象是通過類圖(用例圖)來體現(xiàn)的;(4)過程需要將步驟一步一步的具體化,而對象則只注重類的設(shè)計(jì),不管實(shí)現(xiàn)方法。
3、面向?qū)ο蟮乃拇筇攸c(diǎn):抽象、封裝、繼承、多態(tài)
4、訪問控制權(quán)限:
(1)public公有型:外部可以訪問
(2)protected 保護(hù)型:除了本類、子類與友元可訪問外其它的都不能訪問(3)private 私有型:除了本類外,外部的都不能訪問
5、類與對象的區(qū)別:
(1)二者的定義不同:類是不同類型數(shù)據(jù)及其相關(guān)操作的集合,對象則是類的實(shí)例化(2)類是個(gè)類型,不占空間,但對象占空間。
(3)類是類型而不是數(shù)據(jù)對象,每個(gè)類的對象都是該類數(shù)據(jù)成員的拷貝
6、繼承與派生的目的:(1)實(shí)現(xiàn)代碼的重用
(2)使已存在的類不需修改地適應(yīng)新應(yīng)用 7.繼承的特點(diǎn):
(1)每個(gè)派生類代表基類的特定版本
(2)基類的屬性和方法,派生類必須擁有(構(gòu)造與析構(gòu)不會被繼承)8.繼承的3種方式:public,private,protected
9、多態(tài):是指發(fā)出同樣的消息被不同類型的對象接收后導(dǎo)致完全不同的行為(1)多態(tài)的條件:
○1有兩個(gè)是父子關(guān)系的類 ○2有同名的虛函數(shù)
○3有父類指針或引用調(diào)用子類對象(2)多態(tài)的實(shí)現(xiàn):
函數(shù)的重載 運(yùn)算符重載 虛函數(shù)
1、static有什么用途?(請至少說明兩種)關(guān)鍵字static的作用是什么?
定義靜態(tài)變量 1.限制變量的作用域 2.設(shè)置變量的存儲域
C和C++中static用法(1)C中:
○1當(dāng)一個(gè)變量被定義成static型時(shí),表明該變量是一個(gè)靜態(tài)變量,存儲在靜態(tài)存儲區(qū)中,只能被定義初始化一次;特別的當(dāng)全局變量被定義成static型時(shí),還表明該變量不能被外部文件所引用
○2當(dāng)一個(gè)函數(shù)被聲明為static型時(shí),表明該函數(shù)是一個(gè)靜態(tài)函數(shù),不能被外部文件所調(diào)用
1(2)C++的類中:
○1當(dāng)類的數(shù)據(jù)成員被聲明為static型時(shí),表明該成員是一個(gè)能被所有對象共享的數(shù)據(jù)成員,不與任何具體對象掛勾
○2 當(dāng)類的成員函數(shù)被聲明為static型時(shí),表明該成員是靜態(tài)成員函數(shù)。
2、引用與指針有什么區(qū)別? 1)引用必須被初始化,指針不必。
2)引用初始化以后不能被改變,指針可以改變所指的對象。2)不存在指向空值的引用,但是存在指向空值的指針。
3、描述實(shí)時(shí)系統(tǒng)的基本特性
在特定時(shí)間內(nèi)完成特定的任務(wù),實(shí)時(shí)性與可靠性
4、全局變量和局部變量在內(nèi)存中是否有區(qū)別?如果有,是什么區(qū)別? 全局變量儲存在靜態(tài)數(shù)據(jù)庫,局部變量在堆棧 5 什么是平衡二叉樹?
左右子樹都是平衡二叉樹 且左右子樹的深度差值的絕對值不大于1
6、堆棧溢出一般是由什么原因?qū)е碌模?沒有回收垃圾資源
7、什么函數(shù)不能聲明為虛函數(shù)? constructor 8 冒泡排序算法的時(shí)間復(fù)雜度是什么? O(n^2)
9、Internet采用哪種網(wǎng)絡(luò)協(xié)議?該協(xié)議的主要層次結(jié)構(gòu)? tcp/ip 應(yīng)用層/傳輸層/網(wǎng)絡(luò)層/數(shù)據(jù)鏈路層
10、Internet物理地址和IP地址轉(zhuǎn)換采用什么協(xié)議? ARP(Address Resolution Protocol)(地址解析協(xié)議)
11、.IP地址的編碼分為哪倆部分?
IP地址由兩部分組成,網(wǎng)絡(luò)號和主機(jī)號。不過是要和“子網(wǎng)掩碼”按位與上之后才能區(qū)分哪些是網(wǎng)絡(luò)位哪些是主機(jī)位。
12、分別給出BOOL,int,float,指針變量 與“零值”比較的 if 語句(假設(shè)變量名為var)
BOOL型變量:if(!var)int型變量: if(var==0)float型變量:
const float EPSINON = 0.00001;
if((x >=-EPSINON)&&(x <= EPSINON)
指針變量:
if(var==NULL)
13、不能做switch()的參數(shù)類型是: switch的參數(shù)不能為實(shí)型/
14、局部變量能否和全局變量重名?
答:能,局部會屏蔽全局。要用全局變量,需要使用“::” /
15、如何引用一個(gè)已經(jīng)定義過的全局變量? 答:extern
16、全局變量可不可以定義在可被多個(gè).C文件包含的頭文件中?為什么? 答:可以,在不同的C文件中以static形式來聲明同名全局變量。
17、語句for(;1 ;)有什么問題?它是什么意思?
答:和while(1)相同。
18、do??while和while??do有什么區(qū)別?
答:前一個(gè)循環(huán)一遍再判斷,后一個(gè)判斷以后再循環(huán)
18、static全局變量與普通的全局變量有什么區(qū)別?static局部變量和普通局部變量有什么區(qū)別?static函數(shù)與普通函數(shù)有什么區(qū)別?
static全局變量與普通的全局變量有什么區(qū)別:static全局變量只初使化一次,防止在其他文件單元中被引用;static局部變量和普通局部變量有什么區(qū)別:static局部變量只被初始化一次,下一次依據(jù)上一次結(jié)果值;
static函數(shù)與普通函數(shù)有什么區(qū)別:static函數(shù)在內(nèi)存中只有一份,普通函數(shù)在每個(gè)被調(diào)用中維持一份拷貝。
程序的局部變量存在于(堆棧)中,全局變量存在于(靜態(tài)區(qū))中,動態(tài)申請數(shù)據(jù)存在于(堆)中。
19、sizeof(...)是運(yùn)算符,它的功能是:獲得保證能容納實(shí)現(xiàn)所建立的最大對象的字節(jié)大??;strlen(...)是函數(shù),要在運(yùn)行時(shí)才能計(jì)算。參數(shù)必須是字符型指針(char*)。它的功能是:返回字符串的長度。20、隊(duì)列和棧有什么區(qū)別? 隊(duì)列先進(jìn)先出,棧后進(jìn)先出
21、在c語言庫函數(shù)中將一個(gè)字符轉(zhuǎn)換成整型的函數(shù)是atool()嗎,這個(gè)函數(shù)的原型是什么?
函數(shù)名: atol 功 能: 把字符串轉(zhuǎn)換成長整型數(shù)
用 法: long atol(const char *nptr);
22、對于一個(gè)頻繁使用的短小函數(shù),在C語言中應(yīng)用什么實(shí)現(xiàn),在C++中應(yīng)用什么實(shí)現(xiàn)? c用宏定義,c++用inline
25、直接鏈接兩個(gè)信令點(diǎn)的一組鏈路稱作什么? PPP點(diǎn)到點(diǎn)連接
26、軟件測試都有那些種類? 黑盒:針對系統(tǒng)功能的測試
白合:測試函數(shù)功能,各函數(shù)接口
27.確定模塊的功能和模塊的接口是在軟件設(shè)計(jì)的那個(gè)隊(duì)段完成的? 概要設(shè)計(jì)階段
28/TCP/IP通信建立的過程怎樣,端口有什么作用? 三次握手,確定是哪個(gè)應(yīng)用程序使用該協(xié)議 29/進(jìn)程和線程的差別。
線程是指進(jìn)程內(nèi)的一個(gè)執(zhí)行單元,也是進(jìn)程內(nèi)的可調(diào)度實(shí)體.與進(jìn)程的區(qū)別:(1)調(diào)度:線程作為調(diào)度和分配的基本單位,進(jìn)程作為擁有資源的基本單位
(2)并發(fā)性:不僅進(jìn)程之間可以并發(fā)執(zhí)行,同一個(gè)進(jìn)程的多個(gè)線程之間也可并發(fā)執(zhí)行
(3)擁有資源:進(jìn)程是擁有資源的一個(gè)獨(dú)立單位,線程不擁有系統(tǒng)資源,但可以訪問隸屬于進(jìn)程的資源.(4)系統(tǒng)開銷:在創(chuàng)建或撤消進(jìn)程時(shí),由于系統(tǒng)都要為之分配和回收資源,導(dǎo)致系統(tǒng)的開銷明顯大于創(chuàng)建或撤消線程時(shí)的開銷。30、測試方法
人工測試:個(gè)人復(fù)查、抽查和會審
機(jī)器測試:黑盒測試和白盒測試
31、Heap與stack的差別。Heap是堆,stack是棧。
Stack的空間由操作系統(tǒng)自動分配/釋放,Heap上的空間手動分配/釋放。Stack空間有限,Heap是很大的自由存儲區(qū)
C中的malloc函數(shù)分配的內(nèi)存空間即在堆上,C++中對應(yīng)的是new操作符。
1、軟件測試(英語:software testing),描述一種用來促進(jìn)鑒定軟件的正確性、完整性、安全性和質(zhì)量的過程。換句話說,軟件測試是一種實(shí)際輸出與預(yù)期輸出間的審核或者比較過程。軟件測試的經(jīng)典定義是:在規(guī)定的條件下對程序進(jìn)行操作,以發(fā)現(xiàn)程序錯(cuò)誤,衡量軟件質(zhì)量,并對其是否能滿足設(shè)計(jì)要求進(jìn)行評估的過程。流程:1.軟件測試流程 :需求了解--測試計(jì)劃--測試設(shè)計(jì)--測試用例編寫--測試執(zhí)行--bug管理跟蹤--測試報(bào)告生成
2.bug就是測試過程中發(fā)現(xiàn)的程序缺陷,可以指需求上的,也可以指功能、性能上的
3.bug提交有多種方式,可以通過測試管理工具來管理bug,比如QC等 4.bug的生命周期: 發(fā)現(xiàn)bug(open)--修復(fù)bug(fixed)--關(guān)閉bug(closed)4.軟件測試方法:是指測試軟件性能的方法。包括有:白盒測試、黑盒測試、動態(tài)測試(單元測試、集成測試、系統(tǒng)測試、驗(yàn)收測試、回歸測試等。)
5.測試工具:三類軟件測試工具: Mercury測試工具,Rational測試工具,Segue測試工具,qtp自動化測試工具和AutoRunner工具
6.測試內(nèi)容:負(fù)載壓力、功能測試、白盒測試、測試管理、測試輔助。
2、算法(Algorithm)是一系列解決問題的清晰指令,即能夠?qū)σ欢ㄒ?guī)范的輸入,在有限時(shí)間內(nèi)獲得所要求的輸出。圖像處理算法工程師
1、一個(gè)算法的優(yōu)劣可以用空間復(fù)雜度與時(shí)間復(fù)雜度來衡量。
2、一個(gè)算法應(yīng)該具有以下五個(gè)重要的特征: 有窮性、確定性、輸入、輸出、可行性。
3、冒泡排序(BubbleSort)一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過來?;靖拍钍牵阂来伪容^相鄰的兩個(gè)數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個(gè)和第2個(gè)數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個(gè)數(shù)和第3個(gè)數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個(gè)數(shù),將小數(shù)放前,大數(shù)放后。此第一趟結(jié)束,將最大的數(shù)放到了最后。在第二趟:仍從第一對數(shù)開始比較(因?yàn)榭赡苡捎诘?個(gè)數(shù)和第3個(gè)數(shù)的交換,使得第1個(gè)數(shù)不再小于第2個(gè)數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到倒數(shù)第二個(gè)數(shù)(倒數(shù)第一的位置上已經(jīng)是最大的),第二趟結(jié)束,在倒數(shù)第二的位置上得到一個(gè)新的最大數(shù)(其實(shí)在整個(gè)數(shù)列中是第二大的數(shù))。如此下去,重復(fù)以上過程,直至最終完成排序。由于在排序過程中總是小數(shù)往前放,大數(shù)往后放,相當(dāng)于氣泡往上升,所以稱作冒泡排序。
4快速排序:基本思想是:通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個(gè)排序過程可以遞歸進(jìn)行,以此達(dá)到整個(gè)數(shù)據(jù)變成有序序列。
算法的時(shí)間復(fù)雜度是一個(gè)函數(shù),它定量描述了該算法的運(yùn)行時(shí)間。一個(gè)程序的空間復(fù)雜度是指運(yùn)行完一個(gè)程序所需內(nèi)存的大小。
第二篇:C和C++總結(jié)
1C中分為這幾個(gè)存儲區(qū): 棧,堆,全局區(qū)(靜態(tài)區(qū))—靜態(tài)變量,常量區(qū)
C++中分為這幾個(gè)存儲區(qū):棧,堆(new創(chuàng)建,delete結(jié)束或者操作系統(tǒng)自動回收),全局區(qū)(靜態(tài)區(qū)),自由存儲區(qū)-(malloc創(chuàng)建,free結(jié)束),常量存儲區(qū),2看到一本書上寫了進(jìn)程通信方式有如下:
1)信號 ——軟中斷,2)管道
3)文件和記錄鎖定
4)消息隊(duì)列
5)信號量
6)共享內(nèi)存
Unix的啟動順序排序。
第一步:通過/boot/vm進(jìn)行啟動 linux內(nèi)核
第二步:init /etc/inittab
第三步:啟動相應(yīng)的腳本,并且打開終端
rc.sysinit
rc.d(里面的腳本)
rc.local
第四步:啟動login登錄界面 login
第五步:在用戶登錄的時(shí)候執(zhí)行sh腳本的順序:每次登錄的時(shí)候都會完全執(zhí)行的/etc/profile.d/file
/etc/profile
/etc/bashrc
/root/.bashrc
/root/.bash_profile
Linux中查看目錄大小的命令:du –sh filename
修改文件屬性的命令是:chmod 777 file-R
切換為其他用戶身份的命令是:du
第一次:第一次握手:建立連接時(shí),客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);SYN:同步序列編號(Synchronize Sequence Numbers)。
第二次:第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);
第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包
ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入established狀態(tài),完成三次握手
指令用途
#空指令,無任何效果
#include包含一個(gè)源代碼文件
#define定義宏
#undef取消已定義的宏
#if如果給定條件為真,則編譯下面代碼
#ifdef如果宏已經(jīng)定義,則編譯下面代碼
#ifndef如果宏沒有定義,則編譯下面代碼
#elif如果前面的#if給定條件不為真,當(dāng)前條件為真,則編譯下面代碼
#endif結(jié)束一個(gè)#if……#else條件編譯塊
#error停止編譯并顯示錯(cuò)誤信息
static全局變量與普通的全局變量有什么區(qū)別:static全局變量只初使化一次,防止在其他文件單元中被引用;
static局部變量和普通局部變量有什么區(qū)別:static局部變量只被初始化一次,下一次依據(jù)上一次結(jié)果值;
static函數(shù)與普通函數(shù)有什么區(qū)別:static函數(shù)在內(nèi)存中只有一份,普通函數(shù)在每個(gè)被調(diào)用中維持一份拷貝
第三篇:C語言與C++的區(qū)別總結(jié)
C語言和C++的區(qū)別
首先,我們來看看C語言與C++的概念:
1.C語言是一種計(jì)算機(jī)程序設(shè)計(jì)語言,它既具有高級語言的特點(diǎn),又具有匯編語言的特點(diǎn)。它由美國貝爾研究所的D.M.Ritchie于1972年推出,1978年后,C語言已先后被移植到大、中、小及微型機(jī)上,它可以作為工作系統(tǒng)設(shè)計(jì)語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語言,編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序。它的應(yīng)用范圍廣泛,具備很強(qiáng)的數(shù)據(jù)處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,適于編寫系統(tǒng)軟件,三維,二維圖形和動畫,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開發(fā)。
2.1)C++這個(gè)詞在中國大陸的程序員圈子中通常被讀做“C加加”,而西方的程序員通常讀做“C plus plus”,“CPP”。它是一種使用非常廣泛的計(jì)算機(jī)編程語言。C++是一種靜態(tài)數(shù)據(jù)類型檢查的、支持多重編程范式的通用程序設(shè)計(jì)語言。它支持過程化程序設(shè)計(jì)、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計(jì)、泛型程序設(shè)計(jì)等多種程序設(shè)計(jì)風(fēng)格。
2)
隨著軟件規(guī)模的增大,用C語言編寫程序漸漸顯得有些吃力了。
C++是由AT&T Bell(貝爾)實(shí)驗(yàn)室的Bjarne Stroustrup博士及其同事于20世紀(jì)80年代初在C語言的基礎(chǔ)上開發(fā)成功的? C++保留了C語言原有的所有優(yōu)點(diǎn),增加了面向?qū)ο蟮臋C(jī)制。
C++是由C發(fā)展而來的,與C兼容。用C語言寫的程序基本上可以不加修改地用于C++。從C++的名字可以看出它是C的超越和集中。C++既可用于面向過程的結(jié)構(gòu)化程序設(shè)計(jì),又可用于面向?qū)ο蟮某绦蛟O(shè)計(jì),是一種功能強(qiáng)大的混合型的程序設(shè)計(jì)語言。
C++對C的“增強(qiáng)”,表現(xiàn)在六個(gè)方面:(1)類型檢查更為嚴(yán)格。(2)增加了面向?qū)ο蟮臋C(jī)制。
(3)增加了泛型編程的機(jī)制(Template)。(4)增加了異常處理。(5)增加了運(yùn)算符重載。(6)增加了標(biāo)準(zhǔn)模板庫(STL)。面向?qū)ο蟪绦蛟O(shè)計(jì),是針對開發(fā)較大規(guī)模的程序而提出來的,目的是提高軟件開發(fā)的效率。不要把面向?qū)ο蠛兔嫦蜻^程對立起來,面向?qū)ο蠛兔嫦蜻^程不是矛盾的,而是各有用途、互為補(bǔ)充的。
學(xué)習(xí)C++,既要會利用C++進(jìn)行面向過程的結(jié)構(gòu)化程序設(shè)計(jì),也要會利用C++進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì),更要會利用模板進(jìn)行泛型編程。
C++的特點(diǎn)
C++是在C語言的基礎(chǔ)上開發(fā)的一種面向?qū)ο缶幊陶Z言,應(yīng)用廣泛。
C++語言的主要特點(diǎn)表現(xiàn)在兩個(gè)方面:一是盡量兼容C,二是支持面向?qū)ο蟮姆椒ā?/p>
它操持了C的簡潔、高效的接近匯編語言等特點(diǎn),對C的類型系統(tǒng)進(jìn)行了改革的擴(kuò)充,因此C++比C更安全,C++的編譯系統(tǒng)能檢查出更多的類型錯(cuò)誤。另外,由于C語言的廣泛使用,因而極大的促進(jìn)了C++的普及和推廣。
C++語言最有意義的方面是支持面向?qū)ο蟮奶卣鳌km然與C的兼容使得C++具有雙重特點(diǎn),但他在概念上完全與C不同,更具面向?qū)ο蟮奶卣鳌?/p>
C語言的特點(diǎn)
1.簡潔緊湊、靈活方便
C語言一共只有32個(gè)關(guān)鍵字,9種控制語句,程序書寫自由,主要用小寫字母表示。它把高級語言的基本結(jié)構(gòu)和語句與低級語言的實(shí)用性結(jié)合起來。C 語言可以象匯編語言一樣對位、字節(jié)和地址進(jìn)行操作, 而這三者是計(jì)算機(jī)最基本的工作單元。
2.運(yùn)算符豐富
C的運(yùn)算符包含的范圍很廣泛,共有種34個(gè)運(yùn)算符。C語言把括號、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。從而使C的運(yùn)算類型極其豐富表達(dá)式類型多樣化,靈活使用各種運(yùn)算符可以實(shí)現(xiàn)在其它高級語言中難以實(shí)現(xiàn)的運(yùn)算。
3.數(shù)據(jù)結(jié)構(gòu)豐富
C的數(shù)據(jù)類型有:整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)類型的運(yùn)算。并引入了指針概念,使程序效率更高。另外C語言具有強(qiáng)大的圖形功能, 支持多種顯示器和驅(qū)動器。且計(jì)算功能、邏輯判斷功能強(qiáng)大。
4.C是結(jié)構(gòu)式語言
結(jié)構(gòu)式語言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦? 便于使用、維護(hù)以及調(diào)試。C語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。
5.C語法限制不太嚴(yán)格、程序設(shè)計(jì)自由度大
一般的高級語言語法檢查比較嚴(yán),能夠檢查出幾乎所有的語法錯(cuò)誤。而C語言允許程序編寫者有較大的自由度。
C和C++的區(qū)別:
? C是一個(gè)結(jié)構(gòu)化語言,它的重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序的設(shè)計(jì)首要考慮的是如何通過一個(gè)過程,對輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過程(事務(wù))控制)。
? C++,首要考慮的是如何構(gòu)造一個(gè)對象模型,讓這個(gè)模型能夠契合與之對應(yīng)的問題域,這樣就可以通過獲取對象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務(wù))控制。所以C與C++的最大區(qū)別在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”。
分析C++與C的不同:
一、類,類對于初學(xué)者,它是一個(gè)累贅。類的封裝使得初學(xué)者對程序產(chǎn)生厭倦,感到不適和麻煩。
二、引用,引用是C++中最好盡量不要用它,除非萬不得已。引用對于初學(xué)者就更容易產(chǎn)生混淆,不知道哪個(gè)是引用,哪個(gè)是變量。
三、函數(shù)的重載,初學(xué)者學(xué)函數(shù)的重載好像沒什么壞處,但是,這會使初學(xué)者潛意識里對C語言的變量類型的重要性產(chǎn)生淡化,要記住C語言是對變量類型最敏感了的,變量的類型在C語言里的重要性是不言而喻的。
四、流操作符,和上面同樣的道理,使得對變量類型的重要性產(chǎn)生淡化,有時(shí)會產(chǎn)生使初學(xué)者莫名其妙的結(jié)果。
五、操作符重載,典型的高級應(yīng)用,初學(xué)者可能根本用不著,這個(gè)東東會讓他們覺得C++很難,門檻高,看不懂。
六、繼承,以及虛函數(shù),看起來深?yuàn)W,實(shí)用價(jià)值很低。
七、誤區(qū)::
問:C++是面向?qū)ο蠡亩鳦是面向過程化的?
答:第二對,第一問錯(cuò),C++并非完全面向?qū)ο蠡嬲拿嫦驅(qū)ο蠡恼Z言恐
怕只有Java才算得上。
問:C++能實(shí)現(xiàn)C所不能的功能嗎? 答:至少我還沒有發(fā)現(xiàn)
問:學(xué)了C再學(xué)C++有障礙嗎?比如程序設(shè)計(jì)思想 答:至少我還沒有看見誰有此癥狀。問:學(xué)了C再學(xué)C++又要重頭開始嗎?
答:不,C++下可以實(shí)現(xiàn)C語言的一切功能。問:我學(xué)完了C一定還要學(xué)C++才能編程嗎? 答:完全沒必要。
問:C++比C好在哪里? 答:更加符合軟件工程學(xué)
問:學(xué)完了C再學(xué)C++是不是很容易?
答:那要看你是不是真正的學(xué)完了C語言。
C與C++的最大區(qū)別:在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”,而就語言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,錯(cuò)!算法是程序設(shè)計(jì)的基礎(chǔ),好的設(shè)計(jì)如果沒有好的算法,一樣不行。而且,“C加上好的設(shè)計(jì)”也能寫出非常好的東西。
對語言本身而言,C是C++的子集,那么是什么樣的一個(gè)子集?從上文可以看出,C實(shí)現(xiàn)了C++中過程化控制及其它相關(guān)功能,而在C++中的C(我稱它為“C+”),相對于原來的C還有所加強(qiáng),引入了重載、內(nèi)聯(lián)函數(shù)、異常處理等等玩藝兒,C++更是拓展了面向?qū)ο笤O(shè)計(jì)的內(nèi)容,如類、繼承、虛函數(shù)、模板和包容器類等等。再提高一點(diǎn),在C++中,數(shù)據(jù)封裝、類型這些東東已不是什么新鮮事了,需要考慮的是諸如:對象粒度的選擇、對象接口的設(shè)計(jì)和繼承、組合與繼承的使用等等問題。
所以相對于C,C++包含了更豐富的“設(shè)計(jì)”的概念,但C是C++的一個(gè)自洽子集,也具有強(qiáng)大的功能,同樣值得學(xué)習(xí)
幾點(diǎn)學(xué)習(xí)建議:
1.基本概念很重要。無論學(xué)C,還是學(xué)C++,基本概念都是第一位的,也是比較困難的,但只有把握了基本概念才能把握整體脈絡(luò),才能居高臨下。
2.C是C++的子集,它的基本概念和設(shè)計(jì)方法相對比較容易理解,初學(xué)者可從它入手。
3.如果要學(xué)好C++,建議初學(xué)者最好別在如VC,BCB平臺下寫程序,那種自動化的代碼生成,花花綠綠的界面,會讓你手足無措。最好先找一片空地(unix,dos),從頭做起,寫幾個(gè)大點(diǎn)的程序,數(shù)個(gè)回合,再到VC,BCB下看看,你會輕松得很。在我看來,學(xué)好C/C++是成為VC,BCB高手的必由之路。
4.不要妄想速成,必須得一個(gè)byte,一個(gè)bit的去摳,盡量搞清楚每一個(gè)問題。
6.C語言允許直接訪問物理地址,可以直接對硬件進(jìn)行操作
因此既具有高級語言的功能,又具有低級語言的許多功能,能夠象匯編語言一樣對位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元,可以用來寫系統(tǒng)軟件。
7.C語言程序生成代碼質(zhì)量高,程序執(zhí)行效率高
一般只比匯編程序生成的目標(biāo)代碼效率低10へ20%。
8.C語言適用范圍大,可移植性好
C語言有一個(gè)突出的優(yōu)點(diǎn)就是適合于多種操作系統(tǒng), 如DOS、UNIX,也適用于多種機(jī)型。
用法補(bǔ)充:
C語言對操作系統(tǒng)和系統(tǒng)使用程序以及需要對硬件進(jìn)行操作的場合,用C語言明顯優(yōu)于其它高級語言,許多大型應(yīng)用軟件都是用C語言編寫的。
C語言具有繪圖能力強(qiáng),可移植性,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動畫它是數(shù)值計(jì)算的高級語言。
第四篇:C/C++軟件工程師崗位職責(zé)
1.設(shè)計(jì)并實(shí)現(xiàn)高效的算法和數(shù)據(jù)結(jié)構(gòu)。
2.開發(fā)一個(gè)或多個(gè)關(guān)鍵軟件組件并且負(fù)責(zé)它們的接口定義,實(shí)現(xiàn)優(yōu)化調(diào)試和維護(hù)。
3.與本地和海外的項(xiàng)目組成員交流。
第五篇:C C++程序設(shè)計(jì)大賽策劃
曲阜師范大學(xué)IT協(xié)會
C語言程序設(shè)計(jì)大賽活動策劃書
一、活動背景:
C語言是當(dāng)今世界使用最為廣泛的語言,小到家用電器,大到航空航天,無處不見C語言的身影。我校理科生及部分文科生均已開設(shè)C語言課并報(bào)名參加NCRE(全國計(jì)算機(jī)等級考試)二級C語言的考試,但成績不甚理想。
因此,我們本著“以賽促學(xué),全面提升”的原則,開展此次競賽活動。希望是進(jìn)一步提高大家的編程水平。為以后更深入地學(xué)習(xí)C語言和C類語言,以及參加更高層次的有關(guān)編程的競賽活動(如數(shù)學(xué)建模、電子設(shè)計(jì),ACM/ICPC等)做好準(zhǔn)備。
二、活動地點(diǎn):機(jī)房
三、活動目的及意義:
1.以賽促學(xué),全面提升。推動全??萍蓟顒影l(fā)展,繼承學(xué)??萍脊?jié)學(xué)術(shù)文化節(jié)精神,培養(yǎng)學(xué)生創(chuàng)新和實(shí)踐能力,提高全校學(xué)生的科學(xué)素養(yǎng)。
2.為學(xué)生的個(gè)性發(fā)展搭設(shè)平臺,使學(xué)生在全面發(fā)展的基礎(chǔ)上,展現(xiàn)個(gè)性,探索科學(xué)奧秘,體驗(yàn)創(chuàng)造與成功的快樂,激發(fā)對科學(xué)的求知欲望。
3.以本次活動為載體培養(yǎng)科技人才,加大協(xié)會宣傳及建設(shè)力度,踐行協(xié)會宗旨,促進(jìn)科學(xué)普及。
四、活動對象:全校學(xué)生
五、人員安排:
組委會成員:協(xié)會會長、副會長,各部部長 裁判組成員:技術(shù)指導(dǎo)中心,出題及評分。宣傳成員:
協(xié)會秘書處負(fù)責(zé)宣傳文案、策劃資料的整理工作。協(xié)會宣傳部負(fù)責(zé)展板制作,海報(bào)制作,宣傳資料打?。?學(xué)生會干部聯(lián)系相關(guān)部門配合工作(場地、資金支持等等); 外聯(lián)部協(xié)助進(jìn)行校外宣傳,爭取活動資金。組織、監(jiān)督人員:協(xié)會組織部,負(fù)責(zé)賽前培訓(xùn)報(bào)名、賽中、頒獎(jiǎng)場地的組織,監(jiān)考及收卷工作。
六、比賽方式:
組委會統(tǒng)計(jì)好報(bào)名名單后,把眾多報(bào)名者進(jìn)行分組(具體分組情況根據(jù)總報(bào)名人數(shù)和可利用的電腦數(shù)目而定),方便比賽的順利進(jìn)行。
參賽選手分批次到實(shí)驗(yàn)室參加上機(jī)比賽。附注:
1、根據(jù)人數(shù)多少確定是否舉辦初賽-決賽,或者僅舉辦一次比賽。
2、決賽評出一等獎(jiǎng) 名,二等獎(jiǎng) 名,三等獎(jiǎng) 名,優(yōu)秀獎(jiǎng)若干。
3、程序設(shè)計(jì)大賽相關(guān)題型為上機(jī)題
七、活動流程
1、賽事準(zhǔn)備(9月 日): 組建賽事組委會,明確分工。
與校方協(xié)商活動的具體事宜(各方面取得校方的支持),選定比賽場地。進(jìn)行校內(nèi)宣傳(包括以展板、海報(bào)、橫幅以及各班委等形式的宣傳)。制定比賽題目、比賽規(guī)則和評分標(biāo)準(zhǔn),開始報(bào)名并分組。進(jìn)行校外宣傳,爭取活動資金。
2、賽前培訓(xùn)(9月 日):
由技術(shù)指導(dǎo)中心進(jìn)行。培訓(xùn)時(shí)間為一下午。
3、活動開展(9月 日): 組委會連同協(xié)會其他成員全面做好賽事組織工作(包括每場比賽的組織和監(jiān)督以及對突發(fā)事件的應(yīng)對),與參賽選手保持聯(lián)系,組織做好賽事報(bào)道工作
4、活動后繼(9月 日): 解題大會暨頒獎(jiǎng)典禮。屆時(shí)將分析題目,進(jìn)一步有針對性的對NCRE進(jìn)行輔導(dǎo)。
八、經(jīng)費(fèi)預(yù)算
宣傳橫幅:30 元 展板展示:30 元
資料打?。? 元
獎(jiǎng)金:一等獎(jiǎng) 1 名 獎(jiǎng)金 元
二等獎(jiǎng) 2 名 獎(jiǎng)金 元
三等獎(jiǎng) 5 名 獎(jiǎng)金 元 優(yōu)秀獎(jiǎng) 若干
九、技術(shù)參數(shù)及評獎(jiǎng)辦法
1.校級的程序設(shè)計(jì)大賽,難度適中,定位于初中級編程愛好者。2.本次程序設(shè)計(jì)大賽所有題目由組委會制定,采用黑盒測試與白盒測試相結(jié)合的評測方式。
3.本次活動均采取上機(jī)答題的方式,在規(guī)定時(shí)間內(nèi)完成競賽題目,提交試卷方可離開。
4.使用C/C++語言,只要能解決題目提出的問題,給出答案,均算通過。5.組委會閱題將根據(jù)所編程序的具體情況(如實(shí)現(xiàn)難易程度,代碼耗時(shí)長短,是否有出錯(cuò)判斷等)給分,從而選出優(yōu)勝者。
十、賽場守則
1.競賽者在比賽過程中不得交頭接耳、左顧右盼,抄襲他人答案,一經(jīng)發(fā)現(xiàn)此類情況,取消競賽資格。
2.競賽者不可攜帶相關(guān)文字、書籍資料,程序清單,不可攜帶任何電子存儲介質(zhì)和電子資料,不可連接互聯(lián)網(wǎng),一經(jīng)發(fā)現(xiàn)立刻取消競賽成績。3.競賽者不得將任何通訊工具帶入競賽現(xiàn)場,一經(jīng)發(fā)現(xiàn)立刻取消競賽成績。4.競賽過程中如出現(xiàn)計(jì)算機(jī)故障和相關(guān)疑問,請競賽者及時(shí)聯(lián)系我們負(fù)責(zé)當(dāng)場比賽的裁判員。
5.參加競賽者需保持比賽現(xiàn)場的情節(jié)衛(wèi)生。
6.每位工作人員一定要注意自己的一言一行,注意禮貌;合理安排人員,認(rèn)真執(zhí)行任務(wù),井然有序;活動資料整理后交由辦公室存檔。7.競賽后安排協(xié)會干事打掃比賽現(xiàn)場
主辦單位:學(xué)生社團(tuán)聯(lián)合會 協(xié)辦單位:信傳學(xué)院學(xué)生會 承辦單位:IT協(xié)會
年 月 日