<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      業(yè)精于勤荒于嬉,行成于思?xì)в陔S!

      導(dǎo)航

      c/c++面試題(7)零碎知識(shí)總結(jié)

      1.變量的聲明和定義有什么區(qū)別?

      聲明:變量的聲明做了兩件事情

               a.告訴編譯器這個(gè)變量已經(jīng)匹配到一塊內(nèi)存上了,下面的代碼用到的變量或?qū)ο笫窃趧e處定義的.

                  聲明可以出現(xiàn)很多次.

               b.告訴編譯器這個(gè)變量名已經(jīng)被我占用了,其他的的變量將不能再使用.

      定義:告訴編譯器創(chuàng)建一個(gè)對(duì)象,為這個(gè)對(duì)象分配一塊內(nèi)存并給它取一個(gè)名字,這個(gè)名字就是常說(shuō)的

              變量名或?qū)ο竺?同一變量或?qū)ο蟮亩x只能出現(xiàn)一次.

      本質(zhì)區(qū)別:聲明沒(méi)有分配內(nèi)存,而定義則是創(chuàng)建了對(duì)象并為這個(gè)對(duì)象分配了一塊內(nèi)存.

      2.sizeof和strlen之間的區(qū)別?

         a.sizeof是一個(gè)操作符,而strlen是一個(gè)庫(kù)函數(shù),使用需要包含<string.h>頭文件.

         b.sizeof的參數(shù)可以是數(shù)據(jù)類型或變量,而strlen函數(shù)只能以結(jié)尾為'\0'的字符串的作為參數(shù).

         c.編譯器在編譯的時(shí)候就計(jì)算出了sizeof的結(jié)果.而strlen函數(shù)必須在運(yùn)行的時(shí)候才能計(jì)算出來(lái).

        d.sizeof計(jì)算的是數(shù)據(jù)類型占用的內(nèi)存的大小,而strlen計(jì)算的字符串實(shí)際的長(zhǎng)度,不包括'\0';

           注意strlen在計(jì)算字符數(shù)組的時(shí)候,遇到0的時(shí)候和遇到'\0'的效果一樣.

        e.數(shù)組作為sizeof的參數(shù)不會(huì)退化,而作為strlen的參數(shù)的時(shí)候會(huì)退化為一個(gè)字符指針.

      3.簡(jiǎn)要的說(shuō)下static的用途.C語(yǔ)言關(guān)鍵字static 和 C++的關(guān)鍵字static之間的區(qū)別?

        a.在C語(yǔ)言中static可以修飾局部變量,全局變量和函數(shù).

           static修飾的局部變量,改變了它的存儲(chǔ)方式,由原來(lái)的棧區(qū)改變成靜態(tài)區(qū).實(shí)際上就是影響了它的

           生命周期,作用域并沒(méi)有改變.好處是具有繼承特性,每次調(diào)用時(shí)候都要?jiǎng)?chuàng)建的開(kāi)銷.

            static修飾的全局變量,改變了它的聲明周期,但是存儲(chǔ)方式并沒(méi)有改變,普通的全局變量和靜態(tài)的

            全局變量都是在靜態(tài)存儲(chǔ)區(qū)域,只是改變了它的作用域.由原來(lái)的在整個(gè)源程序都可以使用到只有

            定義它的那個(gè)源文件使用.

            static修飾的函數(shù)也是改變它的作用域,static修飾的函數(shù)又叫內(nèi)部函數(shù);只能在本模塊內(nèi)使用,

            而不能被其他的模塊使用.

         b.C++中除了上述的用途之外,static還可以定義類的成員變量和函數(shù).

             static定義的成員變量和函函數(shù)是隸屬于類,而不是對(duì)象.所有的用類實(shí)例化的對(duì)象都共享

            一份,訪問(wèn)static成員的時(shí)候有兩種方式:一是通過(guò)類域解析::一個(gè)是通過(guò)實(shí)例化的對(duì)象.

            C++的靜態(tài)成員可以在多個(gè)對(duì)象間進(jìn)行通信,傳遞信息.

      4.C中的malloc/free和C++中new/delete之間的區(qū)別?

        a.maloc/free是C的標(biāo)準(zhǔn)庫(kù)函數(shù),可以覆蓋,但是不能重載,C和C++都可以使用.而new/delete是操作符,

           可以重載,只能在C++中使用.

        b.對(duì)于非內(nèi)部的數(shù)據(jù)類型的對(duì)象而言,光用malloc/free是無(wú)法滿足對(duì)象的要求的.對(duì)象在創(chuàng)建的時(shí)候需要

           執(zhí)行構(gòu)造函數(shù),對(duì)象在消亡之前需要執(zhí)行析構(gòu)函數(shù).而malloc/free是庫(kù)函數(shù)而不是運(yùn)算符,不在編譯器

           的控制范圍之內(nèi),編譯器不能將執(zhí)行構(gòu)造函數(shù)和析構(gòu)函數(shù)的任務(wù)強(qiáng)加給malloc/free.因此C++需要有一

           個(gè)能夠完成動(dòng)態(tài)分配內(nèi)存和初始化的new,以及一個(gè)能夠完成清理和釋放內(nèi)存的運(yùn)算符delete.

        c.new的返回值是指定類型的指針,可以自動(dòng)的計(jì)算所需要分配的內(nèi)存的大小.而malloc的返回值是一個(gè)

          void類型的指針,使用的使用要進(jìn)行強(qiáng)制類型轉(zhuǎn)換,并且分配的大小也要程序員的手動(dòng)進(jìn)行計(jì)算.

        d.new/delete完全覆蓋了malloc/free的功能,只所以還保留malloc/free,是因?yàn)槲覀冊(cè)趯慍++程序的時(shí)候有

            時(shí)會(huì)調(diào)用用C編寫的代碼,而C中又沒(méi)有new/delete操作符.

        e.new的時(shí)候做兩件事情:內(nèi)存被分配,為被分配的內(nèi)存調(diào)用一個(gè)或多個(gè)構(gòu)造函數(shù)構(gòu)建對(duì)象.

           delete的時(shí)候也是一樣:為將要被釋放的內(nèi)存調(diào)用一個(gè)或多個(gè)析構(gòu)函數(shù),釋放內(nèi)存.

      4.寫一個(gè)標(biāo)準(zhǔn)的宏MIN,并說(shuō)明下一個(gè)宏的一些用的注意事項(xiàng)?

         #define  MIN(a,b)   ((a) < (b) ? (a) :(b))

         調(diào)用的時(shí)候要注意它的副作用,例如

         ((++*p)<=(x)?(++*p):(x))這種三目操作符最好不要用來(lái)比較帶有自增或自減的表達(dá)式,因?yàn)樵谶\(yùn)算的

         過(guò)程式會(huì)多改變一次,就違背了原來(lái)的本意.

      5.一個(gè)指針可以是volatile嗎?

         可以.因?yàn)橹羔樅推胀ǖ淖兞恳粯右彩且粋€(gè)變量,有時(shí)也會(huì)有變化程序的不可控制性.常見(jiàn)的例子:

         子中斷服務(wù)子程序修改一個(gè)指向一個(gè)buffer的指針時(shí),必須用volatile來(lái)修飾這個(gè)指針.

         volatile修飾的指針通常是共享指針,通常是這個(gè)指針被多個(gè)服務(wù)共享的時(shí)候,這個(gè)時(shí)候就有可能

         在編譯器的檢測(cè)能力之外改變它的值.

      6.簡(jiǎn)述strcpy,sprintf,memcpy的區(qū)別?

         char* strcpy(char* dest,const char* src);

         int     sprintf(char* str,cosnt char* format,...);

         void* memcpy(void* dest,void* src,size_t n);

         1.操作的對(duì)象不同,strcpy的兩個(gè)操作對(duì)象均為字符串,sprintf的操作源對(duì)象可以是多種數(shù)據(jù)類型,

            目的操作對(duì)象是字符串,memcpy的兩個(gè)對(duì)象是兩個(gè)任意類型的可以操作的內(nèi)存地址,不限制

            任何的類型.

         2.執(zhí)行的效率不同,memcpy最高,strcpy次之,sprintf效率最低.

         3.實(shí)現(xiàn)的功能不同,strcpy主要實(shí)現(xiàn)字符串變量間的拷貝,它不檢測(cè)邊界.sprintf主要實(shí)現(xiàn)其他數(shù)據(jù)格式

            到字符串之間的轉(zhuǎn)換.memcpy主要是內(nèi)存塊間的拷貝.

      7.設(shè)置地址為0x67a9的整型變量的值為0xaa66;

         int* p = (int*)0x67a9;

         *p = 0xaa66;

          無(wú)論是什么平臺(tái)地址長(zhǎng)度和整型數(shù)據(jù)的長(zhǎng)度都是一樣的,即一個(gè)整型數(shù)據(jù)可以強(qiáng)制類型轉(zhuǎn)換成地址

          指針類型的只要有意義即可.

      8.C++中的重載,覆蓋,隱藏之間的區(qū)別?

         a.重載(overload)的特征:函數(shù)名相同,同一作用域下參數(shù)列表不同的函數(shù)才形成重載.它對(duì)于返回類型

            和是否是virtual函數(shù)沒(méi)有關(guān)系.重載的功能就是同一函數(shù)名具有不同的行為.

         b.覆蓋(override)的特征:它指的是派生類的函數(shù)覆蓋基類的函數(shù),因此作用域不同.并且覆蓋的要求

            函數(shù)名相同,參數(shù)列表相同并且返回類型都必須相同.基類的成員函數(shù)必須是虛函數(shù).

            所謂的覆蓋指的是:用基類對(duì)象的指針或引用訪問(wèn)虛函數(shù)根據(jù)實(shí)際的指向來(lái)實(shí)際的決定所調(diào)用的函數(shù)

         c.隱藏(hide)的特征:隱藏指的是派生類的函數(shù)隱藏(屏蔽)了與其同名的基類的函數(shù).在調(diào)用一個(gè)類成員函數(shù)的

            時(shí)候,編譯器會(huì)沿著類的繼承鏈逐級(jí)的向上查找函數(shù)的定義,如果找到了,那么就停止查找了.所以如果一個(gè)

            派生類和它的基類都有同一個(gè)同名的函數(shù),編譯器最終選擇派生類中的函數(shù),那么就說(shuō)派生類中的成員函數(shù)

            隱藏了基類中的成員函數(shù),也就是說(shuō)它阻止了編譯器繼續(xù)向上查找的行為.

       

       

       

       

       

       

       

       

       

       

       

       

       

       

      posted on 2014-07-13 16:01  亞三論  閱讀(650)  評(píng)論(0)    收藏  舉報(bào)

      主站蜘蛛池模板: 国产一区二区内射最近更新| 亚洲免费观看一区二区三区| 色综合AV综合无码综合网站| 久久天天躁狠狠躁夜夜婷 | 国产成人无码久久久精品一| 97精品尹人久久大香线蕉| 亚洲综合在线亚洲优优色| 日本国产一区二区三区在线观看 | 在线观看国产一区亚洲bd| 午夜视频免费试看| 悠悠人体艺术视频在线播放| 蜜桃伦理一区二区三区| 久久综合亚洲色一区二区三区| 欧洲亚洲成av人片天堂网| 亚洲欧美激情在线一区| 长泰县| 国产在线中文字幕精品| 中文字幕永久精品国产| 亚洲精品乱码久久久久久不卡| 亚洲国内精品一区二区| 国产乱人伦AV在线麻豆A| 无码抽搐高潮喷水流白浆| 激情六月丁香婷婷四房播| 亚洲欧美日韩愉拍自拍美利坚| 97色伦97色伦国产| 暖暖影院日本高清...免费| 国产精品成人综合色在线| av资源在线看免费观看| 国产国产午夜福利视频| 亚洲天堂一区二区成人在线| 五月综合激情婷婷六月| 欧美中文亚洲v在线| 国产成人午夜精品福利| 亚洲精品喷潮一区二区三区| 麻豆一区二区三区香蕉视频| 精品一区二区不卡无码AV| 国产精品高清中文字幕| 亚洲av伦理一区二区| 免费A级毛片中文字幕| 亚洲国产午夜福利精品| 绝顶丰满少妇av无码|