中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      精心整理的c語(yǔ)言常考的筆試題

      時(shí)間:2023-04-05 03:23:19 筆試題目 我要投稿
      • 相關(guān)推薦

      精心整理的關(guān)于c語(yǔ)言常考的筆試題

        一、 想說(shuō)一說(shuō)關(guān)于集中數(shù)據(jù)類型的sizeof問(wèn)題,這題出現(xiàn)率40%

      精心整理的關(guān)于c語(yǔ)言常考的筆試題

        sizeof就是求在內(nèi)存總占多少字節(jié)的問(wèn)題,最基本的char 1字節(jié) short 2字節(jié) int 4字節(jié)

        任何的指針都是4字節(jié) sizeof(數(shù)組名)=數(shù)組占的大小(這里必須注意雖然數(shù)組名可作為只想數(shù)組首地址的指針,但是sizeof(數(shù)組名)求得的不是指針的大小,而是數(shù)組大小)

        還有就是sizeof(結(jié)構(gòu)體) sizeof(聯(lián)合體)

        舉兩個(gè)例子 struct stu {

        Char a;

        Int b;

        Char c;

        };

        struct teacher {

        Char a;

        Char c;

        Int b;

        };

        Sizeof (stu) =12 ;內(nèi)存中這樣存儲(chǔ) char 空空空 int char 空空空

        內(nèi)存4字節(jié)對(duì)其問(wèn)題

        Sizeof (teacher) =8 ;內(nèi)存中這樣存儲(chǔ) char char空空 int

        關(guān)于聯(lián)合體

        Union std{

        Char a[10];

        Int b[3];

        }

        Sizeof(std)=12; 聯(lián)合體公用內(nèi)存,取其中所占內(nèi)存最大的元素為聯(lián)合體所占內(nèi)存

        以下為Windows NT下的32位C++程序,請(qǐng)計(jì)算sizeof的值

        char str[] = “Hello” ;

        char *p = str ;

        int n = 10;

        1. 請(qǐng)計(jì)算

        sizeof (str ) = 6

        sizeof ( p ) = 4

        sizeof ( n ) = 4

        void Func ( char str[100])

        {

        請(qǐng)計(jì)算

        sizeof( str ) = 4

        }

        void *p = malloc( 100 );

        請(qǐng)計(jì)算

        sizeof ( p ) = 4

        還有位段的問(wèn)題如下

        分析:

        struct bit

        { int a:3;

        int b:2;

        int c:3;

        };

        int main()

        {

        bit s;

        char *c=(char*)&s;

        cout<

        *c=0x99;

        cout << s.a <

        int a=-1;

        printf("%x",a);

        return 0;

        }

        輸出為什么是

        4

        1

        -1

        -4

        ffffffff

        因?yàn)?x99在內(nèi)存中表示為 100 11 001 , a = 001, b = 11, c = 100

        當(dāng)c為有符合數(shù)時(shí), c = 100, 最高1為表示c為負(fù)數(shù),負(fù)數(shù)在計(jì)算機(jī)用補(bǔ)碼表示,所以c = -4;同理

        b = -1;

        當(dāng)c為有符合數(shù)時(shí), c = 100,即 c = 4,同理 b = 3

        位域 :

        有些信息在存儲(chǔ)時(shí),并不需要占用一個(gè)完整的字節(jié), 而只需占幾個(gè)或一個(gè)二進(jìn)制位。例如在存放一個(gè)開(kāi)關(guān)量時(shí),只有0和1 兩種狀態(tài), 用一位二進(jìn)位即可。為了節(jié)省存儲(chǔ)空間,并使處理簡(jiǎn)便,C語(yǔ)言又提供了一種數(shù)據(jù)結(jié)構(gòu),稱為“位域”或“位段”。所謂“位域”是把一個(gè)字節(jié)中的二進(jìn)位劃分為幾個(gè)不同的區(qū)域, 并說(shuō)明每個(gè)區(qū)域的位數(shù)。每個(gè)域有一個(gè)域名,允許在程序中按域名進(jìn)行操作。 這樣就可以把幾個(gè)不同的對(duì)象用一個(gè)字節(jié)的二進(jìn)制位域來(lái)表示。一、位域的定義和位域變量的說(shuō)明位域定義與結(jié)構(gòu)定義相仿,其形式為:

        struct 位域結(jié)構(gòu)名

        { 位域列表 };

        其中位域列表的形式為: 類型說(shuō)明符 位域名:位域長(zhǎng)度

        例如:

        struct bs

        {

        int a:8;

        int b:2;

        int c:6;

        };

        位域變量的說(shuō)明與結(jié)構(gòu)變量說(shuō)明的方式相同。 可采用先定義后說(shuō)明,同時(shí)定義說(shuō)明或者直接說(shuō)明這三種方式。例如:

        struct bs

        {

        int a:8;

        int b:2;

        int c:6;

        }data;

        說(shuō)明data為bs變量,共占兩個(gè)字節(jié)。其中位域a占8位,位域b占2位,位域c占6位。對(duì)于位域的定義尚有以下幾點(diǎn)說(shuō)明:

        1. 一個(gè)位域必須存儲(chǔ)在同一個(gè)字節(jié)中,不能跨兩個(gè)字節(jié)。如一個(gè)字節(jié)所剩空間不夠存放另一位域時(shí),應(yīng)從下一單元起存放該位域。也可以有意使某位域從下一單元開(kāi)始。例如:

        struct bs

        {

        unsigned a:4

        unsigned :0 /*空域*/

        unsigned b:4 /*從下一單元開(kāi)始存放*/

        unsigned c:4

        }

        在這個(gè)位域定義中,a占第一字節(jié)的4位,后4位填0表示不使用,b從第二字節(jié)開(kāi)始,占用4位,c占用4位。

        2. 由于位域不允許跨兩個(gè)字節(jié),因此位域的長(zhǎng)度不能大于一個(gè)字節(jié)的長(zhǎng)度,也就是說(shuō)不能超過(guò)8位二進(jìn)位。

        3. 位域可以無(wú)位域名,這時(shí)它只用來(lái)作填充或調(diào)整位置。無(wú)名的位域是不能使用的。例如:

        struct k

        {

        int a:1

        int :2 /*該2位不能使用*/

        int b:3

        int c:2

        };

        從以上分析可以看出,位域在本質(zhì)上就是一種結(jié)構(gòu)類型, 不過(guò)其成員是按二進(jìn)位分配的。

        位域的使用位域的使用和結(jié)構(gòu)成員的使用相同,其一般形式為: 位域變量名•位域名 位域允許用各種格式輸出。

        main(){

        struct bs

        {

        unsigned a:1;

        unsigned b:3;

        unsigned c:4;

        } bit,*pbit;

        bit.a=1;

        bit.b=7;

        bit.c=15;

        pri

        二、 關(guān)于動(dòng)態(tài)申請(qǐng)內(nèi)存的問(wèn)題 這題出現(xiàn)率極高,60%不為過(guò)

        void GetMemory(char *p)

        {

        p = (char *)malloc(100);

        }

        void Test(void)

        {

        char *str = NULL;

        GetMemory(str);

        strcpy(str, "hello world");

        printf(str);

        }

        請(qǐng)問(wèn)運(yùn)行Test函數(shù)會(huì)有什么樣的結(jié)果?

        答:試題傳入GetMemory( char *p )函數(shù)的形參為字符串指針,在函數(shù)內(nèi)部修改形參并不能真正的改變傳入形參的值,執(zhí)行完

        char *str = NULL;

        GetMemory( str );

        后的str仍然為NULL;

        char *GetMemory(void)

        {

        char p[] = "hello world";

        return p;

        }

        void Test(void)

        {

        char *str = NULL;

        str = GetMemory();

        printf(str);

        }

        請(qǐng)問(wèn)運(yùn)行Test函數(shù)會(huì)有什么樣的結(jié)果?

        答:可能是亂碼。 char p[] = "hello world";

        return p;

        的p[]數(shù)組為函數(shù)內(nèi)的局部自動(dòng)變量,在函數(shù)返回后,內(nèi)存已經(jīng)被釋放。這是許多程序員常犯的錯(cuò)誤,其根源在于不理解變量的生存期。

        void GetMemory2(char **p, int num)

        {

        *p = (char *)malloc(num);

        }

        void Test(void)

        {

        char *str = NULL;

        GetMemory(&str, 100);

        strcpy(str, "hello");

        printf(str);

        }

        請(qǐng)問(wèn)運(yùn)行Test函數(shù)會(huì)有什么樣的結(jié)果?

        答:

        (1)能夠輸出hello

        (2 )Test函數(shù)中也未對(duì)malloc的內(nèi)存進(jìn)行釋放。

        (3)GetMemory避免了試題1的問(wèn)題,傳入GetMemory的參數(shù)為字符串指針的指針,但是在GetMemory中執(zhí)行申請(qǐng)內(nèi)存及賦值語(yǔ)句

        *p = (char *) malloc( num );

        后未判斷內(nèi)存是否申請(qǐng)成功,應(yīng)加上:

        if ( *p == NULL )

        {

        ...//進(jìn)行申請(qǐng)內(nèi)存失敗處理

        }

        void Test(void)

        {

        char *str = (char *) malloc(100);

        strcpy(str, “hello”);

        free(str);

        if(str != NULL)

        {

        strcpy(str, “world”);

        printf(str);

        }

        }

        請(qǐng)問(wèn)運(yùn)行Test函數(shù)會(huì)有什么樣的結(jié)果?

        答:執(zhí)行

        char *str = (char *) malloc(100);

        后未進(jìn)行內(nèi)存是否申請(qǐng)成功的判斷;另外,在free(str)后未置str為空,導(dǎo)致可能變成一個(gè)“野”指針,應(yīng)加上:

        str = NULL;

        三、基本關(guān)鍵字的提問(wèn)

        常考的

        Static extern volatile const register

        register 是把一個(gè)變量聲明為寄存器變量,和auto相對(duì),auto是讓編譯器自動(dòng)決定那些變量放在寄存器里,顯然讓編譯器去決定更合理,所以這個(gè)關(guān)鍵字不常用,而聲明變量時(shí)不寫(xiě)auto的話則自動(dòng)會(huì)成為auto變量, int a; 和auto int a;效果是一樣的,這兩個(gè)只需要了解。

      【精心整理的c語(yǔ)言常考的筆試題】相關(guān)文章:

      華為C語(yǔ)言筆試題12-12

      華為筆試題(C語(yǔ)言)12-10

      基礎(chǔ)C++/C語(yǔ)言筆試題分享11-21

      小升初《水滸傳》的常考知識(shí)整理06-27

      廣告公司常考筆試題08-10

      小升初語(yǔ)文常考辨音試題歸納08-10

      yahoo在線筆試題(c語(yǔ)言)12-12

      C語(yǔ)言筆試試題及答案07-31

      c語(yǔ)言筆試題目及答案08-17

      投資顧問(wèn)面試常考筆試題分享!11-19

      主站蜘蛛池模板: 成人免费视频自偷自拍| 亚洲AV秘 片一区二区三区| 塘沽区| 中文字幕人妻系列一区尤物视频| 国产日韩欧美视频成人| 蜜桃av观看亚洲一区二区| 读书| 诸暨市| 兴国县| 阿巴嘎旗| 北辰区| 国产经典免费视频在线观看| 湟源县| 眉山市| 茌平县| 潍坊市| 锡林郭勒盟| 91精品啪在线看国产网站| 庐江县| 国产美女久久久亚洲综合| 肇州县| 最新国产精品精品视频| 武乡县| 欧美丝袜激情办公室在线观看| 精品国免费一区二区三区| 亚洲女同视频在线观看| 怀宁县| 亚洲国产成人久久综合三区| 日本熟妇hd8ex视频| 国产一区,二区,三区免费视频| 出国| 元码人妻精品一区二区三区9| 国产午夜激无码AV毛片不卡| 国产一区二区三区免费看视频| 美女精品国产一区二区三区| 中文字幕乱码亚洲无线| 国产一区二区三区亚洲精品| 一区二区视频观看在线| 日本一区二区三区黄色| 免费无码黄网站在线观看| 蜜桃av一区二区高潮久久精品|