下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
經(jīng)典c++面試題五
46)位域:
有些信息在存儲時(shí),并不需要占用一個(gè)完整的字節(jié),而只需占幾個(gè)或一個(gè)二進(jìn)制位。例如在存放一個(gè)開關(guān)量時(shí),只有0和1兩種狀態(tài),用一位二進(jìn)位即可。為了節(jié)約存儲空間,并使處理簡便,C語言又供應(yīng)了一種數(shù)據(jù)結(jié)構(gòu),稱為“位域”或“位段”。所謂“位域”是把一個(gè)字節(jié)中的二進(jìn)位劃分為幾個(gè)不同的區(qū)域,并說明每個(gè)區(qū)域的位數(shù)。每個(gè)域有一個(gè)域名,允許在程序中按域名進(jìn)行操作。這樣就可以把幾個(gè)不同的對象用一個(gè)字節(jié)的二進(jìn)制位域來表示。一、位域的定義和位域變量的說明位域定義與結(jié)構(gòu)定義相仿,其形式為:
struct位域結(jié)構(gòu)名{位域列表};其中位域列表的形式為:類型說明符位域名:位域長度
例如:
structbs
{
inta:8;
intb:2;
intc:6;
};
位域變量的說明與結(jié)構(gòu)變量說明的方式相同??刹杉{先定義后說明,同時(shí)定義說明或者直接說明這三種方式。例如:
structbs
{
inta:8;
intb:2;
intc:6;
}data;
說明data為bs變量,共占兩個(gè)字節(jié)。其中位域a占8位,位域b占2位,位域c占6位。對于位域的定義尚有以下幾點(diǎn)說明:
一個(gè)位域必需存儲在同一個(gè)字節(jié)中,不能跨兩個(gè)字節(jié)。如一個(gè)字節(jié)所剩空間不夠存放另一位域時(shí),應(yīng)從下一單元起存放該位域。也可以有意使某位域從下一單元開頭。例如:
structbs
{
unsigneda:4
unsigned:0
unsignedb:4
unsignedc:4
}
在這個(gè)位域定義中,a占第一字節(jié)的4位,后4位填0表示不使用,b從其次字節(jié)開頭,占用4位,c占用4位。
由于位域不允許跨兩個(gè)字節(jié),因此位域的長度不能大于一個(gè)字節(jié)的長度,也就是說不能超過8位二進(jìn)位。
位域可以無位域名,這時(shí)它只用來作填充或調(diào)整位置。無名的位域是不能使用的。例如:
structk
{
inta:1
int:2
intb:3
intc:2
};
從以上分析可以看出,位域在本質(zhì)上就是一種結(jié)構(gòu)類型,不過其成員是按二進(jìn)位安排的。
位域的使用位域的使用和結(jié)構(gòu)成員的使用相同,其一般形式為:位域變量名?位域名位域允許用各種格式輸出。
main()
{
structbs
{
unsigneda:1;
unsignedb:3;
unsignedc:4;
}
bit,*pbit;
bit.a=1;
bit.b=7;
bit.c=15;
pri
47)改錯(cuò):
#include
intmain(void)
{
int**p;
intarr;
p=
return0;
}
解答:搞錯(cuò)了,是指針類型不同,int**p;//二級指針//得到的是指向第一維為100的數(shù)組的指針
#include
intmain(void)
{
int**p,*q;
intarr;
q=arr;
p=
return0;
}
48)下面這個(gè)程序執(zhí)行后會有什么錯(cuò)誤或者效果:
#defineMAX255
intmain()
{
unsignedcharA,i;//i被定義為unsignedchar
for(i=0;imaxnumber)
{
sec_max=maxnumber;
maxnumber=data;
}
else
{
if(data>sec_max)
sec_max=data;
}
}
returnsec_max;
}
43.寫一個(gè)在一個(gè)字符串(n)中查找一個(gè)子串(m)第一個(gè)位置的函數(shù)。
KMP算法效率最好,時(shí)間簡單度是O(n+m)。
44.多重繼承的內(nèi)存安排問題:
比如有classA:publicclassB,publicclassC{}
那么A的內(nèi)存結(jié)構(gòu)大致是怎么樣的?
這個(gè)是piler-dependent的,不同的實(shí)現(xiàn)其細(xì)節(jié)可能不同。
假如不考慮有虛函數(shù)、虛繼承的話就相當(dāng)簡潔;否則的話,相當(dāng)簡單。
45.如何推斷一個(gè)單鏈表是有環(huán)的?(留意不能用標(biāo)志位,最多只能用兩個(gè)額外指針)
structnode{charval;node*next;}
boolcheck(constnode*head){}//returnfalse:無環(huán);true:有環(huán)
一種O(n)的方法就是(搞兩個(gè)指針,一個(gè)每次遞增一步,一個(gè)每次遞增兩步,假如有環(huán)的話兩者必定重合,反之亦然):
boolcheck(constnode*head)
{
if(head==NULL)returnfalse;
node*l
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版反擔(dān)保文化產(chǎn)業(yè)發(fā)展合同2篇
- 系統(tǒng)集成數(shù)據(jù)安全策略-洞察分析
- 2025年北師大版四年級英語上冊月考試卷
- 2025年滬科版八年級地理上冊月考試卷含答案
- 二零二五年度跨境電商平臺股權(quán)收購及運(yùn)營管理合同協(xié)議范本
- 2025年仁愛科普版八年級地理下冊階段測試試卷
- 心理社會因素對疝修補(bǔ)術(shù)恢復(fù)影響-洞察分析
- 2025年人教A版三年級數(shù)學(xué)上冊階段測試試卷含答案
- 2025年度科技創(chuàng)新項(xiàng)目合同履約擔(dān)保函4篇
- 運(yùn)動康復(fù)的生物力學(xué)干預(yù)-洞察分析
- 《請柬及邀請函》課件
- 中小銀行上云趨勢研究分析報(bào)告
- 機(jī)電安裝工程安全培訓(xùn)
- 遼寧省普通高中2024-2025學(xué)年高一上學(xué)期12月聯(lián)合考試語文試題(含答案)
- 青海原子城的課程設(shè)計(jì)
- 常州大學(xué)《新媒體文案創(chuàng)作與傳播》2023-2024學(xué)年第一學(xué)期期末試卷
- 麻醉蘇醒期躁動患者護(hù)理
- 英語雅思8000詞匯表
- 小學(xué)好詞好句好段摘抄(8篇)
- JT-T-1059.1-2016交通一卡通移動支付技術(shù)規(guī)范第1部分:總則
- 《茶藝文化初探》(教學(xué)設(shè)計(jì))-六年級勞動北師大版
評論
0/150
提交評論