1. struct成員類型不可以是它自己,因?yàn)闀f歸定義,理論上導(dǎo)致結(jié)構(gòu)體的大小不能被計算。但是成員可以定義為該結(jié)構(gòu)體的指針或引用。
2. sizeof('0')在C語言里,存放的是字符的ASCALL碼(整型數(shù)據(jù)),結(jié)果為4,在C++中,‘0’為字符常量,類型為char,結(jié)果為1.
3. 數(shù)組初始化規(guī)則:如果制定了數(shù)組維數(shù),那么初始化列表提供的元素個數(shù)不能超過維數(shù)值。如果維數(shù)大于列出的元素初始值個數(shù),那只初始胡按前面的數(shù)組元素;剩下的其他元素,若是內(nèi)置類型則初始化為0,若是類類型則調(diào)用該類的默認(rèn)構(gòu)造函數(shù)進(jìn)行初始化。
4. 可用于線程之間的同步方式: 臨界區(qū)、互斥區(qū)、事件、信號量。
(1) 臨界區(qū)。當(dāng)多個線程訪問一個獨(dú)占性共享資源時,可以使用臨界區(qū)對象。擁有臨界區(qū)的線程可以訪問被保護(hù)起來的資源或者代碼段,其他線程若想訪問,則被掛起,直到擁有臨界區(qū)的線程放棄臨界區(qū)為止。
(2) 互斥區(qū)。 互斥對象和臨界區(qū)對象非常相似,只是其允許在進(jìn)程間使用,而臨界區(qū)只限制與同一進(jìn)程的各個線程之間使用。
(3) 事件。事件機(jī)制,允許一個線程在處理完一個任務(wù)后,主動喚醒另外一個線程執(zhí)行任務(wù)。
(4) 信號量。當(dāng)需要一個計數(shù)器來限制可以使用某共享資源的線性數(shù)目時,可以使用信號量對象。CSemaphore類對象保存了對當(dāng)前訪問某一個指定資源的線程的計數(shù)值,該計數(shù)值是當(dāng)前還可以使用該資源的線程數(shù)目。如果這個計數(shù)達(dá)到了零,則所有對這個CSemaphore類對象所控制的資源的訪問嘗試都被放到一個隊列中等待,直到超時或者計數(shù)值不為零為止。
新聞熱點(diǎn)
疑難解答
圖片精選