您好,登錄后才能下訂單哦!
1:為什么需要給main函數傳參
首先要明白一點,給mian函數傳參不是必須的,但是有時候我們需要通過給main函數不同的參數來得到的不同的結果,比如我們希望main函數中某個變量的值為0時執行子函數A,該變量值為1時執行子函數B,那么這個時候就可以通過給main函數傳參來實現,mian函數傳參格式如下:
int main(int argc , char *argv[]) int main(int argc , char **argv)
參數解釋:
argc:int類型的參數,表示給mian函數傳遞了多少個參數
argv 一個字符數組(或者是二重指針),這個數組用來存放多個字符串,每個字符串就是我們給main函數傳遞的一個參數,需要注意的是我們./a.out執行這個程序時也算是給main函數傳遞了一個參數
2:誰給main函數傳參
在普通的函數a中,它里面的參數是由調用函數a的函數b傳遞的,同樣的,main函數的傳參也是有調用main函數的“函數”給main函數傳參的,但是我們知道,main函數是一個程序的入口函數,所以給main函數傳參的是調用這個程序的一個程序,也就是main函數所在的父進程,并且由這個父進程接受main函數的返回值。
3:main函數傳參的本質
程序調用有各種方法但是本質上都是父進程fork一個子進程,然后子進程和一個程序綁定起來去執行(exec函數族),我們在exec的時候可以給他同時傳參。程序調用時可以被傳參(也就是main的傳參)是操作系統層面的支持完成的。舉個簡單的例子,當我們在控制臺下面輸入./a.out去執行一個程序的時候,其本質是控制臺進程創建了一個子進程去調用我們./a.out這個可執行程序,并負責給這個程序的入口函數也就是main函數傳參,并接收其返回值。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。