下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、使用ODBC API開發(fā)數(shù)據(jù)庫應(yīng)用程序的步驟是什么?連接數(shù)據(jù)源。分配語句句柄。準(zhǔn)備并執(zhí)行SQL語句。獲取結(jié)果集。提交事務(wù)。斷開數(shù)據(jù)源連接并釋放環(huán)境句柄。關(guān)鍵字static的作用是什么?這個(gè)簡(jiǎn)單的問題很少有人能回答完全。在C語言中,關(guān)鍵字static有三個(gè)明顯的作用:1). 在函數(shù)體,一個(gè)被聲明為靜態(tài)的變量,該變量的內(nèi)存只被分配一次,在這一函數(shù)被調(diào)用過程中維持其值不變。2). 在模塊內(nèi)(但在函數(shù)體外),一個(gè)被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問。它是一個(gè)本地的全局變量。3). 在模塊內(nèi),一個(gè)被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個(gè)函數(shù)被限制在
2、聲明它的模塊的本地范圍內(nèi)使用。(4)在類中的static成員變量屬于整個(gè)類所擁有,對(duì)類的所有對(duì)象只有一份拷貝;(5)在類中的static成員函數(shù)屬于整個(gè)類所擁有,這個(gè)函數(shù)不接收this指針,因而只能訪問類的static成員變量。 關(guān)鍵字const是什么含義只要能說出const意味著“只讀”就可以了。const int a; ,a是一個(gè)常整型數(shù)int const a; ,a是一個(gè)常整型數(shù)const int *a; a是一個(gè)指向常整型數(shù)的指針(也就是,整型數(shù)是不可修改的,但指針可以)int * const a; a是一個(gè)指向整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是可以修改的,但指針是
3、不可修改的)int const * a const; 一個(gè)意味著a是一個(gè)指向常整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是不可修改的,同時(shí)指針也是不可修改的)1). 關(guān)鍵字const的作用是為給讀你代碼的人傳達(dá)非常有用的信息,實(shí)際上,聲明一個(gè)參數(shù)為常量是為了告訴了用戶這個(gè)參數(shù)的應(yīng)用目的。如果你曾花很多時(shí)間清理其它人留下的垃圾,你就會(huì)很快學(xué)會(huì)感謝這點(diǎn)多余的信息。(當(dāng)然,懂得用const的程序員很少會(huì)留下的垃圾讓別人來清理的。)2). 通過給優(yōu)化器一些附加的信息,使用關(guān)鍵字const也許能產(chǎn)生更緊湊的代碼。3). 合理地使用關(guān)鍵字const可以使編譯器很自然地保護(hù)那些不希望被改變的參數(shù),防止其被無
4、意的代碼修改。簡(jiǎn)而言之,這樣可以減少bug的出現(xiàn)。作用:(1)欲阻止一個(gè)變量被改變,可以使用const關(guān)鍵字。在定義該const變量時(shí),通常需要對(duì)它進(jìn)行初始化,因?yàn)橐院缶蜎]有機(jī)會(huì)再去改變它了;(2)對(duì)指針來說,可以指定指針本身為const,也可以指定指針?biāo)傅臄?shù)據(jù)為const,或二者同時(shí)指定為const;(3)在一個(gè)函數(shù)聲明中,const可以修飾形參,表明它是一個(gè)輸入?yún)?shù),在函數(shù)內(nèi)部不能改變其值;(4)對(duì)于類的成員函數(shù),若指定其為const類型,則表明其是一個(gè)常函數(shù),不能修改類的成員變量;(5)對(duì)于類的成員函數(shù),有時(shí)候必須指定其返回值為const類型,以使得其返回值不為“左值”。例如:cons
5、t classA operator*(const classA& a1,const classA& a2);operator*的返回結(jié)果必須是一個(gè)const對(duì)象。如果不是,這樣的變態(tài)代碼也不會(huì)編譯出錯(cuò):classA a, b, c;(a * b) = c; / 對(duì)a*b的結(jié)果賦值操作(a * b) = c顯然不符合編程者的初衷,也沒有任何意義。關(guān)鍵字volatile有什么含意 并給出三個(gè)不同的例子。一個(gè)定義為volatile的變量是說這變量可能會(huì)被意想不到地改變,這樣,編譯器就不會(huì)去假設(shè)這個(gè)變量的值了。精確地說就是,優(yōu)化器在用到這個(gè)變量時(shí)必須每次都小心地重新讀取這個(gè)變量的值,而
6、不是使用保存在寄存器里的備份。下面是volatile變量的幾個(gè)例子:1). 并行設(shè)備的硬件寄存器(如:狀態(tài)寄存器)2). 一個(gè)中斷服務(wù)子程序中會(huì)訪問到的非自動(dòng)變量(Non-automatic variables)3). 多線程應(yīng)用中被幾個(gè)任務(wù)共享的變量分別給出BOOL,int,float,指針變量 與“零值”比較的 if 語句(假設(shè)變量名為var)解答:BOOL型變量:if(!var)int型變量: if(var=0)float型變量:const float EPSINON = 0.00001;if (x >= EPSINON) && (x <= EPSINON)指
7、針變量: if(var=NULL)數(shù)組名1、數(shù)組名作為函數(shù)形參時(shí),淪為普通指針。僅僅只是一個(gè)指針;在失去其內(nèi)涵的同時(shí),它還失去了其常量特性,可以作自增、自減等操作,可以被修改。void Func ( char str100 )sizeof( str ) = ? /答案4 2、數(shù)組名指代一種數(shù)據(jù)結(jié)構(gòu),這種數(shù)據(jù)結(jié)構(gòu)就是數(shù)組;例如:char str10;cout sizeof(str) endl;輸出結(jié)果為10,str指代數(shù)據(jù)結(jié)構(gòu)char10。3、數(shù)組名可以轉(zhuǎn)換為指向其指代實(shí)體的指針,而且是一個(gè)指針常量,不能作自增、自減等操作,不能被修改;char str10;str+; /編譯出錯(cuò),提示str不是
8、左值寫一個(gè)“標(biāo)準(zhǔn)”宏MIN,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)#define MIN(A,B) (A) <= (B) ? (A) : (B)為什么標(biāo)準(zhǔn)頭文件都有類似以下的結(jié)構(gòu)? #ifndef _INCvxWorksh#define _INCvxWorksh#ifdef _cplusplus /防止被重復(fù)引用extern “C” #endif#ifdef _cplusplus#endif#endif /* _INCvxWorksh */作為一種面向?qū)ο蟮恼Z言,C+支持函數(shù)重載,而過程式語言C則不支持。函數(shù)被C+編譯后在symbol庫中的名字與C語言的不同。例如,假設(shè)某個(gè)函數(shù)的原
9、型為: void foo(int x, int y);該函數(shù)被C編譯器編譯后在symbol庫中的名字為_foo,而C+編譯器則會(huì)產(chǎn)生像_foo_int_int之類的名字。_foo_int_int這樣的名字包含了函數(shù)名和函數(shù)參數(shù)數(shù)量及類型信息,C+就是考這種機(jī)制來實(shí)現(xiàn)函數(shù)重載的。為了實(shí)現(xiàn)C和C+的混合編程,C+提供了C連接交換指定符號(hào)extern “C”來解決名字匹配問題,函數(shù)聲明前加上extern “C”后,則編譯器就會(huì)按照C語言的方式將該函數(shù)編譯為_foo,這樣C語言中就可以調(diào)用C+的函數(shù)了。編寫類String的構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù),已知類String的原型為:class
10、Stringpublic:String(const char *str = NULL); / 普通構(gòu)造函數(shù)String(const String &other); / 拷貝構(gòu)造函數(shù) String(void); / 析構(gòu)函數(shù)String & operate =(const String &other); / 賦值函數(shù)private:char *m_data; / 用于保存字符串;解答:/普通構(gòu)造函數(shù)String:String(const char *str)if(str=NULL)m_data = new char1; / 得分點(diǎn):對(duì)空字符串自動(dòng)申請(qǐng)存放結(jié)束標(biāo)志0的空/加
11、分點(diǎn):對(duì)m_data加NULL 判斷*m_data = 0;elseint length = strlen(str);m_data = new charlength+1; / 若能加 NULL 判斷則更好strcpy(m_data, str);/ String的析構(gòu)函數(shù)String:String(void)delete m_data; / 或delete m_data;/拷貝構(gòu)造函數(shù)String:String(const String &other) / 得分點(diǎn):輸入?yún)?shù)為const型int length = strlen(other.m_data);m_data = new char
12、length+1; /加分點(diǎn):對(duì)m_data加NULL 判斷strcpy(m_data, other.m_data);/賦值函數(shù)String & String:operate =(const String &other) / 得分點(diǎn):輸入?yún)?shù)為const型if(this = &other) /得分點(diǎn):檢查自賦值return *this;delete m_data; /得分點(diǎn):釋放原有的內(nèi)存資源int length = strlen( other.m_data );m_data = new charlength+1; /加分點(diǎn):對(duì)m_data加NULL 判斷strcpy(
13、 m_data, other.m_data );return *this; /得分點(diǎn):返回本對(duì)象的引用區(qū)別引用與指針有什么區(qū)別?答 1) 引用必須被初始化,指針不必。2) 引用初始化以后不能被改變,指針可以改變所指的對(duì)象。3) 不存在指向空值的引用,但是存在指向空值的指針。全局變量和局部變量在內(nèi)存中是否有區(qū)別? 答 、全局變量?jī)?chǔ)存在靜態(tài)數(shù)據(jù)區(qū),局部變量在堆棧中。類成員函數(shù)的重載、覆蓋和隱藏區(qū)別?a. 成員函數(shù)被重載的特征:(1)相同的范圍(在同一個(gè)類中);(2)函數(shù)名字相同;(3)參數(shù)不同;(4)virtual 關(guān)鍵字可有可無。b.覆蓋是指派生類函數(shù)覆蓋基類函數(shù),特征是:(1)不同的范圍(分別
14、位于派生類與基類);(2)函數(shù)名字相同;(3)參數(shù)相同;(4)基類函數(shù)必須有virtual 關(guān)鍵字。c.“隱藏”是指派生類的函數(shù)屏蔽了與其同名的基類函數(shù),規(guī)則如下:(1)如果派生類的函數(shù)與基類的函數(shù)同名,但是參數(shù)不同。此時(shí),不論有無virtual關(guān)鍵字,基類的函數(shù)將被隱藏(注意別與重載混淆)。(2)如果派生類的函數(shù)與基類的函數(shù)同名,并且參數(shù)也相同,但是基類函數(shù)沒有virtual 關(guān)鍵字。此時(shí),基類的函數(shù)被隱藏(注意別與覆蓋混淆)Struct與class的區(qū)別答案:struct 的成員默認(rèn)是公有的,而類的成員默認(rèn)是私有的。struct 和 class 在其他方面是功能相當(dāng)?shù)?。從感情上講,大多數(shù)的
15、開發(fā)者感到類和結(jié)構(gòu)有很大的差別。感覺上結(jié)構(gòu)僅僅象一堆缺乏封裝和功能的開放的內(nèi)存位,而類就象活的并且可靠的社會(huì)成員,它有智能服務(wù),有牢固的封裝屏障和一個(gè)良好定義的接口。既然大多數(shù)人都這么認(rèn)為,那么只有在你的類有很少的方法并且有公有數(shù)據(jù)(這種事情在良好設(shè)計(jì)的系統(tǒng)中是存在的!)時(shí),你也許應(yīng)該使用 struct 關(guān)鍵字,否則,你應(yīng)該使用 class 關(guān)鍵字。枚舉與#define的區(qū)別1),#define 宏常量是在預(yù)編譯階段進(jìn)行簡(jiǎn)單替換。枚舉常量則是在編譯的時(shí)候確定其值。2),一般在編譯器里,可以調(diào)試枚舉常量,但是不能調(diào)試宏常量。3),枚舉可以一次定義大量相關(guān)的常量,而#define 宏一次只能定義一
16、個(gè)。exit與return的區(qū)別exit()函數(shù)在退出程序后會(huì)將控制權(quán)交回給操作系統(tǒng)當(dāng)通過return語句從一般函數(shù)返回時(shí)控制權(quán)將交給調(diào)用該函數(shù)的函數(shù)在main()函數(shù)中使用return語句返回后,控制權(quán)將交給操作系統(tǒng),因此在主函數(shù)中return語句的功能與exit()函數(shù)功能相同。指針常量const char*, char const*, char*const的區(qū)別問題幾乎是C+面試中每次都會(huì)有的題目。把一個(gè)聲明從右向左讀。char * const cp; ( * 讀成 pointer to )cp is a const pointer to charconst char * p;p is
17、a pointer to const char;char const * p;同上因?yàn)镃+里面沒有const*的運(yùn)算符,所以const只能屬于前面的類型。鏈表和數(shù)組二者都屬于一種數(shù)據(jù)結(jié)構(gòu)從邏輯結(jié)構(gòu)來看1. 數(shù)組必須事先定義固定的長度(元素個(gè)數(shù)),不能適應(yīng)數(shù)據(jù)動(dòng)態(tài)地增減的情況。當(dāng)數(shù)據(jù)增加時(shí),可能超出原先定義的元素個(gè)數(shù);當(dāng)數(shù)據(jù)減少時(shí),造成內(nèi)存浪費(fèi);數(shù)組可以根據(jù)下標(biāo)直接存取。2. 鏈表動(dòng)態(tài)地進(jìn)行存儲(chǔ)分配,可以適應(yīng)數(shù)據(jù)動(dòng)態(tài)地增減的情況,且可以方便地插入、刪除數(shù)據(jù)項(xiàng)。(數(shù)組中插入、刪除數(shù)據(jù)項(xiàng)時(shí),需要移動(dòng)其它數(shù)據(jù)項(xiàng),非常繁瑣)鏈表必須根據(jù)next指針找到下一個(gè)元素從內(nèi)存存儲(chǔ)來看1. (靜態(tài))數(shù)組從棧中分配
18、空間, 對(duì)于程序員方便快速,但是自由度小2. 鏈表從堆中分配空間, 自由度大但是申請(qǐng)管理比較麻煩 從上面的比較可以看出,如果需要快速訪問數(shù)據(jù),很少或不插入和刪除元素,就應(yīng)該用數(shù)組;相反, 如果需要經(jīng)常插入和刪除元素就需要用鏈表數(shù)據(jù)結(jié)構(gòu)了。Sizeof和strlen sizeof是運(yùn)算符,計(jì)算數(shù)據(jù)所占的內(nèi)存空間;strlen()是一個(gè)函數(shù),計(jì)算字符數(shù)組的字符數(shù); sizeof可以用類型作參數(shù);strlen()只能用char*作參數(shù),必須是以/0結(jié)束 數(shù)組做sizeof的參數(shù)不退化,傳遞給strlen就退化為指針了; sizeof操作符的結(jié)果類型是size_t,它在頭文件中typedef為unsigned int類型。該類型保證能容納實(shí)現(xiàn)建立的最大對(duì)象的字節(jié)大小/為了實(shí)現(xiàn)鏈?zhǔn)讲僮鳎瑢⒛康牡刂贩祷?,?分! char * strcpy( char *strDest, const char *strSrc ) assert( (strDest != NULL) && (strSrc != NULL) ); c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度生態(tài)修復(fù)工程合同要點(diǎn)解析3篇
- 二零二五年度綠色農(nóng)業(yè)種植合同補(bǔ)充協(xié)議
- 2024考研沖刺班報(bào)名合同書一
- 2024食用油供貨合同
- 2024股權(quán)轉(zhuǎn)讓與行使權(quán)益協(xié)議
- 二零二五年度數(shù)據(jù)存儲(chǔ)與備份外包服務(wù)協(xié)議2篇
- 打造品牌影響力動(dòng)植物百科知識(shí)競(jìng)賽的商業(yè)應(yīng)用
- 2024版高端裝備制造技術(shù)許可合同
- 二零二五年度文化旅游項(xiàng)目股權(quán)轉(zhuǎn)讓與市場(chǎng)開發(fā)協(xié)議3篇
- 二零二五年度森林防火工程工地圍擋及滅火物資合同3篇
- 蘇教版一年級(jí)上冊(cè)《科學(xué)》期末知識(shí)點(diǎn)匯總 重點(diǎn)知識(shí)梳理 總復(fù)習(xí)【版 】課件
- 青島版小學(xué)科學(xué)三年級(jí)下冊(cè)課程綱要
- 目標(biāo)、計(jì)劃與行動(dòng)課件
- 動(dòng)態(tài)變形模量Evd試驗(yàn)記錄
- 2020-2021學(xué)年浙江省溫州市八年級(jí)(上)期末數(shù)學(xué)試卷(附答案詳解)
- 蔬菜籽種采購清單
- 工期定額-民用建筑
- 低壓電能表安裝作業(yè)指導(dǎo)書
- 能見度不良時(shí)船舶航行須知
- 軟膠囊的制備
- 回風(fēng)立井臨時(shí)改絞施工措施
評(píng)論
0/150
提交評(píng)論