1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. 精心整理的c語言?嫉墓P試題

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

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

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

        精心整理的關(guān)于c語言?嫉墓P試題

          sizeof就是求在內(nèi)存總占多少字節(jié)的問題,最基本的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)合體)

          舉兩個例子 struct stu {

          Char a;

          Int b;

          Char c;

          };

          struct teacher {

          Char a;

          Char c;

          Int b;

          };

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

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

          Sizeof (teacher) =8 ;內(nèi)存中這樣存儲 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++程序,請計算sizeof的值

          char str[] = “Hello” ;

          char *p = str ;

          int n = 10;

          1. 請計算

          sizeof (str ) = 6

          sizeof ( p ) = 4

          sizeof ( n ) = 4

          void Func ( char str[100])

          {

          請計算

          sizeof( str ) = 4

          }

          void *p = malloc( 100 );

          請計算

          sizeof ( p ) = 4

          還有位段的問題如下

          分析:

          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

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

          當c為有符合數(shù)時, c = 100, 最高1為表示c為負數(shù),負數(shù)在計算機用補碼表示,所以c = -4;同理

          b = -1;

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

          位域 :

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

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

          { 位域列表 };

          其中位域列表的形式為: 類型說明符 位域名:位域長度

          例如:

          struct bs

          {

          int a:8;

          int b:2;

          int c:6;

          };

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

          struct bs

          {

          int a:8;

          int b:2;

          int c:6;

          }data;

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

          1. 一個位域必須存儲在同一個字節(jié)中,不能跨兩個字節(jié)。如一個字節(jié)所?臻g不夠存放另一位域時,應從下一單元起存放該位域。也可以有意使某位域從下一單元開始。例如:

          struct bs

          {

          unsigned a:4

          unsigned :0 /*空域*/

          unsigned b:4 /*從下一單元開始存放*/

          unsigned c:4

          }

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

          2. 由于位域不允許跨兩個字節(jié),因此位域的長度不能大于一個字節(jié)的長度,也就是說不能超過8位二進位。

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

          struct k

          {

          int a:1

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

          int b:3

          int c:2

          };

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

          位域的使用位域的使用和結(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)于動態(tài)申請內(nèi)存的問題 這題出現(xiàn)率極高,60%不為過

          void GetMemory(char *p)

          {

          p = (char *)malloc(100);

          }

          void Test(void)

          {

          char *str = NULL;

          GetMemory(str);

          strcpy(str, "hello world");

          printf(str);

          }

          請問運行Test函數(shù)會有什么樣的結(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);

          }

          請問運行Test函數(shù)會有什么樣的結(jié)果?

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

          return p;

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

          void GetMemory2(char **p, int num)

          {

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

          }

          void Test(void)

          {

          char *str = NULL;

          GetMemory(&str, 100);

          strcpy(str, "hello");

          printf(str);

          }

          請問運行Test函數(shù)會有什么樣的結(jié)果?

          答:

          (1)能夠輸出hello

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

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

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

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

          if ( *p == NULL )

          {

          ...//進行申請內(nèi)存失敗處理

          }

          void Test(void)

          {

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

          strcpy(str, “hello”);

          free(str);

          if(str != NULL)

          {

          strcpy(str, “world”);

          printf(str);

          }

          }

          請問運行Test函數(shù)會有什么樣的結(jié)果?

          答:執(zhí)行

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

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

          str = NULL;

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

          ?嫉

          Static extern volatile const register

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

        【精心整理的c語言?嫉墓P試題】相關(guān)文章:

        華為C語言筆試題12-12

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

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

        小升初《水滸傳》的?贾R整理06-27

        廣告公司?脊P試題08-10

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

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

        C語言筆試試題及答案07-31

        c語言筆試題目及答案08-17

        投資顧問面試?脊P試題分享!11-19

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>