您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)main函數(shù)怎么用的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
main函數(shù),是以C為基礎(chǔ)開發(fā)平臺(tái)的程序入口點(diǎn),通常,我們寫程序很少去關(guān)注函數(shù)main函數(shù)參數(shù)列表,而是簡(jiǎn)單給出下面這種情況。
int main() { system("pause"); return 0; }
打開MSDN,查看main函數(shù),
main( int argc, char *argv[ ], char *envp[ ] )
{
program-statements
}
首先,我們先來看前兩個(gè)參數(shù),argc和 argv[ ],這兩個(gè)主要是用來描述命令行參數(shù)的,但并不能說他們是命令行參數(shù),對(duì)一個(gè)程序而言,它們表示的是main函數(shù)的形參。(有點(diǎn)繞)
舉個(gè)例子,打開cmd,如下圖
我們輸入hello.exe,表示這是一個(gè)可執(zhí)行程序,后面我們可以跟上一些參數(shù),-m,2,1等,參數(shù)在這里沒有什么實(shí)際意義,但如果我們提前寫好了hello.exe,之后我們加上的參數(shù),都是可以獲取到的,那我們這里加上的這些參數(shù),就是所謂的命令行參數(shù),和main函數(shù)的參數(shù)是兩回事。
那在cmd下可以運(yùn)行,在外部環(huán)境下怎么去設(shè)置環(huán)境變量呢?
打開VS編譯器,項(xiàng)目----->屬性---->調(diào)試
在這里,我們可以提前設(shè)置好命令行參數(shù)。
argc和argc[ ]就是用來調(diào)整這些參數(shù)的,它們可以獲取到我們?cè)O(shè)置的命令行參數(shù)
其中,argc表示的是參數(shù)的個(gè)數(shù),對(duì)程序而言,去識(shí)別命令行參數(shù)時(shí),都是當(dāng)做字符串來識(shí)別,而argv[]是一個(gè)字符指針數(shù)組,數(shù)組的每個(gè)元素都是char*類型的,指向的就是我們的命令行參數(shù)的各個(gè)參數(shù),數(shù)組名為argv。
還是上面的例子,我們的argc值為4,而argv[]中共有五個(gè)char*類型的元素,分別為"hello.exe","-m","2","1",最后還存放了一個(gè)NULL。argc里面是NULL之前的參數(shù)個(gè)數(shù)。
那我們就可以通過數(shù)組下標(biāo)的方式 argv[i] 來訪問到我們的命令行參數(shù)的內(nèi)容,再去實(shí)現(xiàn)我們的功能。通常,一般會(huì)在程序最開始對(duì)argc進(jìn)行判斷,是否滿足我們接下來要訪問的參數(shù)個(gè)數(shù),如果小于我們所需最少的參數(shù)個(gè)數(shù),程序往往會(huì)奔潰。
另外需要強(qiáng)調(diào)的一點(diǎn),還是,這幾個(gè)參數(shù)只是形參,名字并不是固定的,可以去改變它,只是我們通常這樣來理解。
很明顯,我們每次需要實(shí)現(xiàn)一個(gè)操作,都需要跑到工程----->屬性下面去改命令行參數(shù),這并不是我們想要的,但命令行參數(shù)確實(shí)是很重要的,這主要體現(xiàn)在cmd環(huán)境下。
在cmd環(huán)境下找到我們剛剛建的工程,Debug下找到剛剛的可執(zhí)行程序(后綴為.exe),在它后面跟上我們的參數(shù),點(diǎn)擊回車,參數(shù)就會(huì)被獲取到,就會(huì)出現(xiàn)我們想要的結(jié)果。
再舉個(gè)簡(jiǎn)單的例子,fcopy.exe 是實(shí)現(xiàn)文件復(fù)制的可執(zhí)行程序文件,在命令行方式運(yùn)行fcopy格式:
系統(tǒng)提示符 + fcopy.exe in.dat out.dat
in.dat”和“out.dat”是命令行參數(shù),其中,“in.dat ”和“out.dat”前均可帶盤符和查找路徑。
關(guān)于環(huán)境變量
簡(jiǎn)單地說就是“Path”是一個(gè)變量,里面存儲(chǔ)了一些常用命令所存放的目錄路徑。跟DOS的默認(rèn)路徑相似,當(dāng)吧目錄添加到Path下之后,運(yùn)行某些程序時(shí)除了在當(dāng)前文件夾中尋找外,還會(huì)到設(shè)置的默認(rèn)路徑中去查找。
比如path, 是告訴系統(tǒng), 當(dāng)要求系統(tǒng)運(yùn)行一個(gè)程序而沒有告訴它程序所在的完整路徑時(shí), 系統(tǒng)除了在當(dāng)前目錄下面尋找此程序外, 還應(yīng)到哪些目錄下去尋找。
一般情況下,看不出環(huán)境變量有什么意義,但學(xué)習(xí)過Java的應(yīng)該都知道,eclipse安裝之后是要配置環(huán)境變量的,也就是把bin目錄給復(fù)制過去,具體是為什么,這里就不多解釋了。環(huán)境變量能解決的另一個(gè)大問題,就是雙系統(tǒng)的軟件共用問題。例如分別在C盤和D盤安裝win7和xp的系統(tǒng),但有些軟件卻只在某個(gè)系統(tǒng)下安裝,另一個(gè)系統(tǒng)下往往不能使用,比較麻煩的辦法就是在另個(gè)平臺(tái)下再安裝一遍。
為什么在某個(gè)系統(tǒng)下安裝的軟件在另外一個(gè)系統(tǒng)打不開呢?原因是安裝軟件時(shí)往往須要向系統(tǒng)目錄中復(fù)制某些文件,而使用另外一個(gè)系統(tǒng)時(shí)會(huì)由于缺少這些文件而無法運(yùn)行。環(huán)境變量則可以很好的解決這個(gè)問題。
查看環(huán)境變量,可以通過我的電腦-〉屬性-〉高級(jí),來設(shè)置系統(tǒng)的環(huán)境變量,然而在此設(shè)置的環(huán)境變量是否在注冊(cè)表中具有對(duì)應(yīng)的項(xiàng)呢?答案是肯定的。
感謝各位的閱讀!關(guān)于“main函數(shù)怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。