孫雨軒
(東北師范大學(xué)附屬中學(xué)凈月實(shí)驗(yàn)學(xué)校,長春 130117)
問題表現(xiàn):C++編程語言對于命名問題十分重視,尤其還對變量的命名,必須明確,其目的就是為了避免出現(xiàn)由于命名混亂導(dǎo)致的程序錯(cuò)誤,影響程序的可讀性。關(guān)于變量命名問題,一般是出現(xiàn)在初學(xué)者在程序的編寫過程中容易出現(xiàn)的問題。
解決對策:為了進(jìn)一步解決新手在操作中出現(xiàn)這樣的問題,通過匈牙利表法能夠直接有效的通過用一個(gè)或者多個(gè)小寫字母對變量名進(jìn)行命名,夾著在字母后面著名變量的意義,就能夠按照隨附的字母進(jìn)行排序,也能夠自符合C++編程的變量要求。例如,以編程中三個(gè)變量為例,這三個(gè)變量分別是iValue1、iValue2、fResult,通過觀察命名就能知道命名所代表的變量意思。
首字母i就表示整個(gè)變量數(shù)據(jù)屬于整型變量數(shù)據(jù),f就表示整個(gè)變量數(shù)據(jù)屬于浮點(diǎn)型變量數(shù)據(jù)。所以能夠強(qiáng)襲準(zhǔn)確的對這些變量數(shù)據(jù)進(jìn)行辨別和確認(rèn)。如果采用一般的命名法,我們能夠區(qū)分iValue1、iValue2是具有相同屬性的兩個(gè)變量,但是就很難理解fResult的類型關(guān)系。所以說利用匈牙利表示法,能夠有效的幫助新手在應(yīng)用不熟練的情況下找到數(shù)據(jù)并進(jìn)行下一步工作。
問題表現(xiàn):動(dòng)態(tài)內(nèi)存分配的問題,一直是C++編程中經(jīng)常出現(xiàn)的問題,在分析動(dòng)態(tài)內(nèi)存問題的表現(xiàn)形式以及解決方法之前,先要對動(dòng)態(tài)內(nèi)存分配的內(nèi)涵有一定的了解。動(dòng)態(tài)內(nèi)存分配就是指程序執(zhí)行的過程中動(dòng)態(tài)的分配或者回收儲(chǔ)存空間,進(jìn)行再分配。在編程中,經(jīng)常會(huì)出現(xiàn)程序編寫人員為了節(jié)省空間內(nèi)存,使用動(dòng)態(tài)內(nèi)存來儲(chǔ)存空間,最終由于操作不當(dāng),導(dǎo)致的動(dòng)態(tài)分配的問題。這時(shí),null指針會(huì)進(jìn)行接引操作,對分配的內(nèi)存進(jìn)行越過邊界的處理,釋放非動(dòng)態(tài)分配的內(nèi)存、在什邡過程中經(jīng)常是釋放了一部分但隨即就又被繼續(xù)使用。在傳遞的過程中,要求傳遞給free的指針必須從malloccalloc-realloc函數(shù)再返還給指針。但是通過釋放非港臺(tái)內(nèi)存,容易引起程序的終止或延遲終止。
問題表現(xiàn):概念的混淆主要體現(xiàn)在對局部變量、全局變量、存儲(chǔ)類別的概念混淆。這三種概念都是C++編程中經(jīng)常出現(xiàn)的問題,對于初學(xué)者而言很難區(qū)分三者之間的關(guān)系。局部變量就是指在函數(shù)內(nèi)部的定義,并旨在函數(shù)中能夠有效,在應(yīng)用中要注重,在main中定義的局部變量也只是在主函數(shù)有效,由于不同的函數(shù)不同,可以通過使用同名的局部變量,只要局部變量只針對函數(shù)作用,就能夠互不干擾。全局變量,也就外部變量,顧名思義,就是與局部變量的內(nèi)涵完全相反,知識(shí)能夠應(yīng)用在函數(shù)外部的變量。通過對整個(gè)程序的考慮,由于外部變量空間占用內(nèi)存較大,也要注重對其的應(yīng)用,避免出新降低程序清晰度的問題。變量存儲(chǔ)類別,在整個(gè)程序中主要有三個(gè)存儲(chǔ)部分,分別是:程序區(qū)、動(dòng)態(tài)存儲(chǔ)區(qū)、靜態(tài)存儲(chǔ)區(qū)。
由于數(shù)據(jù)種類的不同,也要放在不同的存儲(chǔ)去進(jìn)行存儲(chǔ)。其中變量存儲(chǔ)的只要是在動(dòng)態(tài)存儲(chǔ)區(qū)和靜態(tài)存儲(chǔ)區(qū)之中。由于命名不同,例如,auto、extern、static等。所以針對不同的命名就要選擇不同的存儲(chǔ)空間。
解決對策:為了進(jìn)一步解決概念混淆使用問題,主要就是掌握局部變量、全局變量、存儲(chǔ)類別的概念,進(jìn)一步在進(jìn)行存儲(chǔ)是,主張對變量性質(zhì)的權(quán)衡。對于靜態(tài)局部變量,在函數(shù)調(diào)試之后,不釋放其占用的單元,在進(jìn)行下一次函數(shù)的使用時(shí),仍然可以對上次的數(shù)據(jù)進(jìn)行再次使用數(shù)據(jù),在靜態(tài)局部變量中通過函數(shù)的調(diào)試,這是其他函數(shù)不能夠比擬的。靜態(tài)全局變量,通過上文對全局變量含義的分析,靜態(tài)全局變量只能夠應(yīng)用在本函數(shù)中。register是能夠把作為一般變量進(jìn)行儲(chǔ)存,在程序運(yùn)行中需要時(shí),由控制器該變量輸送在CPU運(yùn)算器中,通過CPU的運(yùn)算,再進(jìn)行存儲(chǔ)?,F(xiàn)在技術(shù)已經(jīng)能夠?qū)⒆兞窟M(jìn)行自行的發(fā)送,不需要指定即可。
在這個(gè)過程中,C++編程中常見問題與解決途徑需要以變量命名、動(dòng)態(tài)內(nèi)存、概念混淆使用為依據(jù),注意在進(jìn)行編程中對常見問題綜合思考,是提高解決能力、促進(jìn)C++編程程序完善上升空間的有效舉措。
[1] 李素若.基于慕課的編程類課程混合式教學(xué)模式研究與實(shí)踐——以《C++程序設(shè)計(jì)》為例[J].軟件導(dǎo)刊,2017,16(1):189-191.