歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C語言之main函數傳參

C語言之main函數傳參

日期:2017/3/1 9:09:57   编辑:Linux編程

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函數傳參,並接收其返回值。

Copyright © Linux教程網 All Rights Reserved