溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C語言之main函數(shù)傳參

發(fā)布時(shí)間:2020-06-30 21:09:44 來源:網(wǎng)絡(luò) 閱讀:562 作者:菜鳥養(yǎng)成記 欄目:編程語言

1:為什么需要給main函數(shù)傳參

  首先要明白一點(diǎn),給mian函數(shù)傳參不是必須的,但是有時(shí)候我們需要通過給main函數(shù)不同的參數(shù)來得到的不同的結(jié)果,比如我們希望main函數(shù)中某個(gè)變量的值為0時(shí)執(zhí)行子函數(shù)A,該變量值為1時(shí)執(zhí)行子函數(shù)B,那么這個(gè)時(shí)候就可以通過給main函數(shù)傳參來實(shí)現(xiàn),mian函數(shù)傳參格式如下:

int main(int argc , char *argv[])
int main(int argc , char **argv)

參數(shù)解釋:

argc:int類型的參數(shù),表示給mian函數(shù)傳遞了多少個(gè)參數(shù)

argv 一個(gè)字符數(shù)組(或者是二重指針),這個(gè)數(shù)組用來存放多個(gè)字符串,每個(gè)字符串就是我們給main函數(shù)傳遞的一個(gè)參數(shù),需要注意的是我們./a.out執(zhí)行這個(gè)程序時(shí)也算是給main函數(shù)傳遞了一個(gè)參數(shù)

2:誰給main函數(shù)傳參

  在普通的函數(shù)a中,它里面的參數(shù)是由調(diào)用函數(shù)a的函數(shù)b傳遞的,同樣的,main函數(shù)的傳參也是有調(diào)用main函數(shù)的“函數(shù)”給main函數(shù)傳參的,但是我們知道,main函數(shù)是一個(gè)程序的入口函數(shù),所以給main函數(shù)傳參的是調(diào)用這個(gè)程序的一個(gè)程序,也就是main函數(shù)所在的父進(jìn)程,并且由這個(gè)父進(jìn)程接受main函數(shù)的返回值。

3:main函數(shù)傳參的本質(zhì)

 程序調(diào)用有各種方法但是本質(zhì)上都是父進(jìn)程fork一個(gè)子進(jìn)程,然后子進(jìn)程和一個(gè)程序綁定起來去執(zhí)行(exec函數(shù)族),我們在exec的時(shí)候可以給他同時(shí)傳參。程序調(diào)用時(shí)可以被傳參(也就是main的傳參)是操作系統(tǒng)層面的支持完成的。舉個(gè)簡單的例子,當(dāng)我們在控制臺下面輸入./a.out去執(zhí)行一個(gè)程序的時(shí)候,其本質(zhì)是控制臺進(jìn)程創(chuàng)建了一個(gè)子進(jìn)程去調(diào)用我們./a.out這個(gè)可執(zhí)行程序,并負(fù)責(zé)給這個(gè)程序的入口函數(shù)也就是main函數(shù)傳參,并接收其返回值。


 

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI