c語言題中的一些陷阱

一、求下列兩個數組的長度關係數組

characX[] = "abcdefg";ide

       char acY[] ={ 'a', 'b','c', 'd', 'e', 'f', 'g' };函數

解析:對於字符串來講,字符串結尾默認爲‘\0’,因此acX[]的長度爲8,而第二個數組的大小長度爲7,並且由於沒有用‘\0’結尾,因此在屏幕上輸出的值是不肯定的.ui


2、求下列程序的輸出結果spa

void example(characHello[])                       3d

{指針

   printf("%d\n", sizeof(acHello));blog

return;內存

}字符串

int main()

{

characHello[] = "hello,bit";

   example(acHello);


   system("pause");

      return0;

}

解析:函數傳參時有兩種方式,一種是值傳遞,一種是址傳遞對於數組來講傳遞的是首元素的

地址。Sizeof(類型)是求內存大小的函數,好比sizeof(int)=4,sizeof(char)=1;.

一個指針變量佔有4個字節sizeof(*p)=4

wKioL1bbQUbDQSu0AAAr0hKdCMs168.png

3、如下敘述不正確的是(D)

A)、在不一樣的函數中能夠使用相同變量的名字

B)、函數中的形式參數是在棧中保存

C)、在一個函數內定義的變量只在本函數範圍內有效

D)、在一個複合語句中定義的變量在本函數範圍內有效(複合語句指的是函數中的成對括弧構成的代碼)

wKioL1bbQduia970AAAp1YKvbt0938.png

4、設有以下定義

       unsignedlongpulArray[] = { 6, 7, 8, 9, 10 };

    unsignedlong*pulPtr;

    pulPtr =pulArray;

 

    *(pulPtr +3) += 3;

    printf("%d,%d\n", *pulPtr, *(pulPtr + 3));

求程序輸出的結果

 wKiom1bbQcyRAIltAAAlIDmYJ2E194.png

5、求輸出結果

    void example()

{

    inti;

    characNew[20];

    for(i = 0; i < 5; i++)

    {

        acNew[i]= '0';

    }

    printf("%d\n", strlen(acNew));

    return;

}

int main()

{

 

    example();

    system("pause");

    return0;

}

wKioL1bbQsaBGWNfAAAmEZDDV5M814.png

6、全局變量只能在一個被.C包含的頭文件中

解析:會發生變量重定義。

當一個程序要引入一個文件時  <> 表示只在當前庫中尋找,找不到就會出錯。

      「」 表示先在當前庫中尋找,找不到再在系統目錄中找。

「」比<>的範圍要大。

7、有如下程序求輸出結果

int main()

{

    union

    {

        shortk;

        chari[2];

    }*s,a;

    s =&a;

    s->i[0]= 0x39;

    s->i[1]= 0x38;

    printf("%x\n", a.k);

    system("pause");

    return0;

}


wKiom1bbQufxE3V5AAAyQs9c_BU449.png

8、設有如下宏定義

#defineN4

#defineY(n)((N+2)*n)

z = 2 * (N+ Y(5 + 1))的結果

wKioL1bbQ8mTTTWnAAAtL-UzuJ8443.png

9int main()

{

 

   unsignedchar a = 200;

   unsignedchar b = 100;

   unsignedchar c = 0;

   c = a +b;

   printf("%d  %d\n", a + b, c);

 

   system("pause");

   return 0;

}

求程序的執行結果()300  44


wKioL1bbREeBOkmsAAAzLIrPnZw885.png

10、求輸出結果

int main()

{

   char c;

   unsignedchar uc;

   unsignedshort us;

   c = 128;

   uc = 128;

   us = c +uc;

   printf("0x%x", us);

   us =(unsigned char)c + uc;

   printf("0x%x", us);

   us = c +(char)uc;

   printf("0x%x\n",us);

 

 

   system("pause");

   return 0;

}                   

wKioL1bbRMbyr0pGAAA_4Jduyhg310.png

12unsignedshort*sum(unsignedchara,unsignedcharb)

{

 

    unsignedshorts = 0;

    s = a+ b;

    return&s;

}

int main()

{

    unsignedshort*p = NULL;

    unsignedchara = 1, b = 2;

    p = sum(a,b);

    printf("%u+%u", a, b);

    printf("=%u\n", *p);

 

    system("pause");

    return0;

}

求程序執行結果()

wKiom1bbRKHT4R8QAAAy2g7C6Bg623.png

相關文章
相關標籤/搜索