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;
}