c/c++ 的零碎知識

1.  int  =  4;

     (a++) = +a;            //左側不是一個有效變量,不能賦值

     (++a) += (a++);    // 真確可以賦值

2.  頭文件中的ifndef/define/endif 幹什麼用?預處理

     防止頭文件被重複引用。

3.  在C++ 程序中調用被C 編譯器編譯後的函數,爲什麼要加extern “C”聲明?

     答:函數和變量被C++編譯後在符號庫中的名字與C 語言的不同,被extern "C"修飾的變量和函數是按照C 語言方式編譯和連接的。

            由於編譯後的名字不同,C++程序不能直接調用C 函數。C++提供了一個C 連接交換指定符號extern“C”來解決這個問題。

4.  switch()中不允許的數據類型是?

      實型。

5.  C++中爲什麼用模板類?

     (1)可以用來創建動態增長和減小的數據結構

     (2)它是類型無關的,因此具有很高的可複用性

     (3)它在編譯時而不是運行時檢查數據類型,保證了類型安全

     (4)它是平臺無關的,可移植性

     (5)可用於基本數據類型

6.  程序什麼時候應該使用線程,什麼時候單線程效率高。

    (1)耗時的操作使用線程,提高應用程序響應。

    (2)並行操作時使用線程,如C/S 架構的服務器端併發線程響應用戶的請求。

    (3)多CPU 系統中,使用線程提高CPU 利用率。

    (4)改善程序結構。一個既長又複雜的進程可以考慮分爲多個線程,成爲幾個獨立或半獨立的運行部分,這樣的程序會利於理解和修改。

             其他情況都使用單線程。

7.  用戶級線程和內核級線程比較。

     (1)用戶級線程利用線程庫提供的創建、同步、調度和管理線程的函數來控制用戶線程,

               內核級線程需要內核的參與、有內核來創建、撤銷和調度。

     (2)用戶級線程不需要佔用內核的寶貴空間。

     (3)用戶級線程若有一個因I/O而處於等待狀態則整個進程就處於等待狀態,

               內核級線程則有利於多處理器的併發,但卻佔用了更多的系統開支。

8. 給結構體成員賦值

     struct A {
           int     a;
           int     b;
           int     c;
     };

     int main (void)
     {

            // 可以用其點成員名字給其成員賦值
           struct A    a = {  .a = 1,    .b = 2,   .c = 3  };

          return 0;
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章