青牛軟件筆試心得_第1頁
青牛軟件筆試心得_第2頁
青牛軟件筆試心得_第3頁
青牛軟件筆試心得_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

青牛軟件筆試心得您需要登錄后才可以回帖 登錄| 注冊(cè)發(fā)布第一題voidmain(){inta[5]={1,2,3,4,5};int*ptr=(int*)(a+1);int*ptr2=a+1;printf("%d,%d,%d\n",*(a+1),*(ptr-1),*(ptr2-1));}輸出為2,5,1問題:中間那個(gè) 5是怎么來的?解答:inta[5]={1,2,3,4,5};此語句會(huì)讓系統(tǒng)在棧內(nèi)存中分配5個(gè)連續(xù)的int型(32位機(jī)是四個(gè)字節(jié))空間是一個(gè)指針常量,a應(yīng)該是被分配在靜態(tài)存儲(chǔ)區(qū)(不敢肯定,望大牛解惑當(dāng)然不是,是存在??臻g的動(dòng)態(tài)存儲(chǔ)的,這我自己知道),并且有一個(gè)固定的值假設(shè)該數(shù)組的首地址為4000,即a的值是4000,那麼數(shù)組元素5的地址應(yīng)該是 a[4]=4000+4*4=4016另外假設(shè)a的地址是3000int*ptr=(int*)(a+1);指針做加法時(shí),我們要關(guān)心的不是指針本身,而是指針?biāo)赶虻臄?shù)據(jù)類型很明顯a是一個(gè)指針(指針和地址的概念是等價(jià)的,若對(duì)這句話有異議,我們可以一起討論),這個(gè)指針?biāo)赶虻氖莂而a是一個(gè)數(shù)組類型(注意,這里不能將a理解為一個(gè)指針常量,數(shù)組和指針的區(qū)別還是很大的),sizeof(a)=20所以

ptr=a+1=3000+20=3020,

在將其轉(zhuǎn)換為

int*

型所以

ptr-1=3020-4=3016,

這片內(nèi)存中的數(shù)是不確定的

,所以第二個(gè)打印出來5完全是碰巧的,要不就是編譯器的問題樓主是不是這樣想的?其實(shí)這還是搞混了數(shù)組和指針記住,數(shù)組就是數(shù)組,指針就是指針,千萬不要混用(雖然有時(shí)候混用是正確的).只有當(dāng)數(shù)組以實(shí)參傳遞給函數(shù)時(shí),它才會(huì)變成指針。這道題我們應(yīng)該這樣理解:是一個(gè)int[5]型的數(shù)組,那么a自然是指向這個(gè)數(shù)組(千萬不要以為a指向一個(gè)指針常量,這就是上面所犯的錯(cuò)誤 ),那么a+1自然是指向下一個(gè)數(shù)組所以ptr=4000+20=4020 ,而不是3016。第二題voidmain(){chara[][3]={1,2,3,4,5};cout}輸出為

12345問題:a[1][2]

為啥是

0,而不是隨機(jī)值

?此題中

a[][3]

a[2][3]

是等價(jià)的,系統(tǒng)會(huì)自動(dòng)不上一個(gè)\3(

控制字符

)如果輸出

a[1][2]

不會(huì)輸出數(shù)值

0,因?yàn)?/p>

0對(duì)應(yīng)字符是(null) 這個(gè)控制字符,因此會(huì)啥也不輸出,只是一個(gè)空格a[0] 代表了字符數(shù)組(字符串)的首地址,大家都知道如果用cout輸出一個(gè)字符串名字(也即首地址)會(huì)輸出該字符串的內(nèi)容,因此cout三、classcls{public:virtualvoidfunc1(){}virtualvoidfunc2(){}voidfunc3(){}protected:private:staticcharm_data;};intmain(){coutsystem("pause");return0;}輸出4理由:static 變量占用的是靜態(tài)區(qū)內(nèi)存而 cls占用的是動(dòng)態(tài)區(qū),因此不含有 charm_data的內(nèi)存,func3 函數(shù)是不占用內(nèi)存的(不管是否在類內(nèi)實(shí)現(xiàn)還是在類外實(shí)現(xiàn),也不管是否有參數(shù)和返回值),實(shí)際上cls的內(nèi)存只有分配了一個(gè)虛擬函數(shù)表的地址,用來管理虛擬函數(shù)的,不論加入多少虛擬函數(shù)都只有4個(gè)字節(jié)的大小,如果把static去掉,那將輸出

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論