當前位置:全科學識雲 > 職場範文 > 面試 > VC面試問題
手機版

VC面試問題

來源:全科學識雲 閱讀:1.69W 次

1. 函數調用的幾種形式:

VC面試問題

cdecl:c declare(C調用約定)的縮寫,是C和C++程序的缺省調用方式,規則是,按從右至左的順序壓參數入棧,由調用者把參數彈出棧,對於傳送參數的內存棧是由調用者來維護的,正因爲如此,只有這種調用方式可實現個數不定的入口參數(可變參數)。

stdcall:是pascal程序的缺省調用方式,規則是,按從右至左的順序壓參數入棧,被調用的函數在返回前清理傳送參數的內存棧。

上兩者的主要區別是前者由調用者清理棧,後者由被調用的函清理棧。當然函數名的修飾部分也是不同的。

fastcall:採用寄存器傳遞參數,特點就是快了。

2.C++中用模板類的好處:

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

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

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

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

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

Message和postMessage,GetMessage和peekMessage有什麼區別?

postMessage和SendMessage的區別主要是在於是否等待其他程序處理消息,postMessage只是把消息放入隊列,不管其他程序是否處理都返回,然後繼續執行,而SendMessage必須等待其他程序處理消息後才返回,繼續執行。這兩個函數的返回值也不同,postMessage的返回值表示postMessage函數執行是否正確,而SendMessage的返回值表示其他程序處理消息後的返回值。

peekMessage和GetMessage主要有以下區別:

essage將等到有合適的消息時才返回,而peekMessage只是撇下一個消息隊列。

2. GetMessage會將消息從隊列中刪除,而peekMessage可以設定最後一個參數wRemoveMsg來決定是否將消息保留在隊列中。

創建線程的方式有三種,MFC的AfxBeginThread,win32ApI的CreateThread和C RunTime的_beginthreadex.其中AfxBeginThread創建線程有創建工作者線程和UI線程之分。

itDialog,InitInstance,OnCreate在建立對話框中執行的先後順序。

答:InitInstance,OnCreate,OnInitDialog.執行順序從先到後。

5.談談C和C++的區別,你是如何理解面向對象思想的?

C和C++最大的區別是他們解決問題的思想是不一樣的,C是一個結構化語言,重點在於算法和數據結構,對於C++考慮的是如何構造一個對象模型,使這個模型能配合對應的問題,透過獲取對象的狀態資訊得到輸出或實現過程控制。

面向對象是指人們認識客觀世界的思維方式,採用基於對象的概念去建立模型

6。Heap與stack的差別。

Heap是堆,stack是棧。

Stack的空間由操作系統自動分配/釋放,Heap上的空間手動分配/釋放。

Stack空間有限,Heap是很大的自由存儲區

C中的malloc函數分配的內存空間即在堆上,C++中對應的是new操作符。

程序在編譯期對變量和函數分配內存都在棧上進行,且程序執行過程中函數調用時參數的傳遞也在棧上進行

ows下的內存是如何管理的?

內存分配方式有三種:

1.從靜態存儲區域分配。內存在程序編譯的時候就已經分配好,這塊內存在程序的整個執行期間都存在。例如全局變量,static變量。

2.在棧上創建。在執行函數時,函數內局部變量的存儲單元都可以在棧上創建,函數執行結束時這些存儲單元自動被釋放。棧內存分配運算內置於處理器的指令集中,效率很高,但是分配的內存容量有限。

3.從堆上分配,亦稱動態內存分配。程序在執行的時候用malloc或new申請任意多少的內存,程序員自己負責在何時用free或釋放內存。動態內存的生存期由我們決定,使用非常靈活,但問題也最多。


本文連結:https://www.qkxsy.com/zhichangfw/mianshi/mm9x6.html

Copyright © 2024. 全科學識雲 All right reserved.

文字美圖素材,版權屬於原作者。部分文章內容由網友提供推送時因種種原因未能與原作者聯繫上,若涉及版權問題,敬請原作者聯繫我們,立即處理。