日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
調(diào)用函數(shù)不僅僅只是傳遞正確的參數(shù)類型,你學會了嗎?

這里有一個新手犯下的一個典型錯誤。
假設,我們想調(diào)用這個函數(shù),GetBinaryType。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比鐵山網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式鐵山網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋鐵山地區(qū)。費用合理售后完善,10多年實體公司更值得信賴。

void sample()
{
if (GetBinaryType(TEXT(“explorer.exe”), ????)) {
…
}
}

請問,這里的問號處應該傳遞什么類型的參數(shù)?你可能會說,這事兒不難。根據(jù)這個函數(shù)的原型描述,它的第二個參數(shù)是一個 LPDWORD,所以,我可以這樣傳遞參數(shù):

void sample()
{
if (GetBinaryType(TEXT(“explorer.exe”), (LPDWORD)NULL)) {
…
}
}

如果像上面那個傳遞參數(shù),則程序會崩潰。好吧,也許我們可以像下面這樣傳遞一個 LPDWORD 參數(shù)。

void sample()
{
LPDWORD lpdw;
if (GetBinaryType(TEXT(“explorer.exe”), lpdw)) {
…
}
}

程序再次崩潰。哦,不對,這里的變量沒有初始化,我們將它先初始化再試試。

void sample()
{
LPDWORD lpdw = NULL;
if (GetBinaryType(TEXT(“explorer.exe”), lpdw)) {
…
}
}

程序依然崩潰。等會,我知道怎么得到一個有效的 LPDWORD,像下面這樣。

void sample()
{
LPDWORD lpdw = new DWORD;
if (GetBinaryType(TEXT(“explorer.exe”), lpdw)) {
…
}
}

終于,代碼可以跑起來了。好,我們看下一個問題。

當然,經(jīng)驗豐富的程序員還是會搖頭。僅僅因為函數(shù)原型說參數(shù)是 LPDWORD 并不意味著你必須有一個類型為 LPDWORD 的變量。實際上,你只需要一個類型為 LPDWORD 的表達式。

void sample()
{
DWORD dw;
if (GetBinaryType(TEXT(“explorer.exe”), &dw)) {
…
}
}

不會吧,就這么簡單?為什么我要花功夫講這個主題呢?

不,我不是想要侮辱你的智商。我試圖讓你像新手一樣思考。有時你會閱讀一大塊代碼并發(fā)現(xiàn)一些奇怪的東西,比如上面帶有新 DWORD 的代碼。當你這樣做時(例如,在調(diào)試該代碼序列中的內(nèi)存泄漏問題時),不要試圖為完成簡單任務的看似迂回的方式找到一些深刻的含義。如果你能像新手一樣思考,你只會認識到這是一個典型的初學者錯誤,糾正它,然后繼續(xù)你的生活。

總結

深刻理解函數(shù)調(diào)用的機制,需向下探索到匯編代碼層級,底層摸透之后,回頭再看,便覺得一切都是那么自然。
正所謂:道法自然。


分享名稱:調(diào)用函數(shù)不僅僅只是傳遞正確的參數(shù)類型,你學會了嗎?
URL鏈接:http://m.5511xx.com/article/cddjoip.html