張 瀟
(吉林大學(xué),吉林 長(zhǎng)春 130012)
算法程序設(shè)計(jì)中會(huì)用到許多變量,正確有效的使用變量能夠提高程序的邏輯性和效率。常用的編程語(yǔ)言C語(yǔ)言中變量從存儲(chǔ)方式上可以分為動(dòng)態(tài)存儲(chǔ)方式變量和靜態(tài)存儲(chǔ)方式變量,動(dòng)態(tài)存儲(chǔ)方式是指在程序運(yùn)行期間根據(jù)需要進(jìn)行動(dòng)態(tài)的分配存儲(chǔ)空間,在函數(shù)調(diào)用開(kāi)始時(shí)分配,函數(shù)運(yùn)行結(jié)束時(shí)釋放,程序運(yùn)行期間函數(shù)被調(diào)用兩次分配給此函數(shù)中動(dòng)態(tài)變量的存儲(chǔ)空間可能是不一樣的。靜態(tài)存儲(chǔ)方式是在程序運(yùn)行期間由系統(tǒng)分配固定的存儲(chǔ)空間。C語(yǔ)言中變量從作用域上可區(qū)分為局部變量和全局變量,全局變量全部以靜態(tài)存儲(chǔ)方式存儲(chǔ),在程序開(kāi)始執(zhí)行時(shí)給全局變量分配存儲(chǔ)區(qū),程序執(zhí)行完畢釋放,在程序執(zhí)行過(guò)程中全局變量占據(jù)固定的存儲(chǔ)單元。局部變量分為靜態(tài)局部變量和動(dòng)態(tài)局部變量,靜態(tài)局部變量是在函數(shù)內(nèi)部用Static聲明的變量,其作用域?yàn)槁暶髯兞康暮瘮?shù)內(nèi)部,但在整個(gè)程序的運(yùn)行期間占據(jù)固定的存儲(chǔ)單元,且變量的初始化是在編譯時(shí)進(jìn)行的。在C語(yǔ)言程序設(shè)計(jì)中,變量的指針就是變量的地址,存放變量地址的變量為指針變量,用來(lái)指向另一個(gè)變量。指針變量同樣分為全局變量和局部變量,局部指針變量包括靜態(tài)局部指針變量和動(dòng)態(tài)指針變量。
靜態(tài)局部指針變量為函數(shù)內(nèi)部用Static聲明的指針變量,其作用域是聲明變量的函數(shù)內(nèi)部,在程序運(yùn)行期間占據(jù)固定存儲(chǔ)單元。靜態(tài)局部指針變量可以用已經(jīng)聲明的靜態(tài)局部變量的地址、全局變量的地址進(jìn)行初始化,但不允許使用動(dòng)態(tài)局部變量的地址和指針變量值初始化。示例程序用creat()函數(shù)創(chuàng)建了動(dòng)態(tài)鏈表,用search(int x)函數(shù)搜索年齡為x的學(xué)生信息并顯示。示例程序變量情況如表1所示,sq是靜態(tài)整形指針變量,用靜態(tài)整形變量n的地址初始化,示例程序中多次運(yùn)行search(int x)函數(shù)可連續(xù)搜索年齡為x的學(xué)生,第一次運(yùn)行搜索出鏈表中第一個(gè)年齡為x的學(xué)生,第二次運(yùn)行搜索出鏈表中第二個(gè)年齡為x的學(xué)生,靜態(tài)指針變量sp在search(int x)函數(shù)第一次運(yùn)行時(shí)取得鏈表頭指針,在搜索過(guò)程中逐次指向鏈表的下一結(jié)點(diǎn),search(int x)函數(shù)運(yùn)行結(jié)束后sp的存儲(chǔ)單元保留,使得search(int x)函數(shù)下次運(yùn)行時(shí)從該結(jié)點(diǎn)繼續(xù)搜索。由于靜態(tài)局部指針變量不允許使用指針變量值初始化,所以在search(int x)函數(shù)中沒(méi)有使用static struct student*sp=head語(yǔ)句初始化sp,而采用了if語(yǔ)句使得sp在search(int x)函數(shù)在第一次運(yùn)行時(shí)取得鏈表頭指針。示例程序如下所示。
表1 示例程序變量情況一覽表
靜態(tài)局部變量的作用域?yàn)槁暶髟撟兞康暮瘮?shù)內(nèi)部,在整個(gè)程序的運(yùn)行期間占用固定的內(nèi)存單元,該變量在其它函數(shù)中不能使用,但可以利用全局指針變量在其它函數(shù)引用和改變變量占用內(nèi)存單元的值,從而起到擴(kuò)充靜態(tài)局部變量的作用域的作用。在上述示例程序中可以將k聲明為main()函數(shù)中的靜態(tài)局部變量,另外聲明一個(gè)整形全局指針變量qp,利用qp變量根據(jù)需要在search(int x)函數(shù)中改變k的值,程序如下所示。
高級(jí)語(yǔ)言包括各種類(lèi)型的變量,且變量作用域不同,又有靜態(tài)變量和動(dòng)態(tài)變量的區(qū)分,各種變量的使用方式不同,初始化的要求也不同,正確使用變量是保證編寫(xiě)正確程序的基礎(chǔ),同時(shí)設(shè)計(jì)中合理使用各種變量可以提高編程的效率。
[1]方黨生.基于C語(yǔ)言編程思路的實(shí)踐與探索[J].福建電腦,2007,(7):185-186.
[2]譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2005:155-199.
[3]張福祥.C語(yǔ)言程序設(shè)計(jì)[M].沈陽(yáng):遼寧大學(xué)出版社,2010:175-183.