c语言 方程改main的值_c语言main函数里的参数argv和argc解析
生活随笔
收集整理的這篇文章主要介紹了
c语言 方程改main的值_c语言main函数里的参数argv和argc解析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
一般我們平時寫main函數的話,一般都是寫不帶參數的比較多,而且也習慣了這樣寫;其實標準的形式寫法,main函數是帶兩個參數的,這兩個參數分別是:argc和argv,那么這兩個參數是表示什么意思,怎么用呢?今天就給大家分享main函數里面這兩個參數的使用,下面看到這樣的寫法,要明白這樣寫的意思哦!
main函數返回給誰
01
函數為什么需要返回值
函數在設計的時候設計了參數和返回值,參數是函數的輸入,返回值是函數的輸出。
因為函數需要對外輸出數據(實際上是函數運行的一些結果值),因此需要返回值。
形式上來說,函數被另外一個函數所調用,返回值作為函數式的值返回給調用這個函數的地方。
總的來說,函數的返回值就是給調用的地方返回一個值。
02
main函數被誰調用
(1)main函數是特殊的,首先這個名字是特殊的;因為在c語言里面規定了main函數是整個程序的入口;其它函數只有直接或者間接被main函數所調用才能被執行,如果沒用被main函數直接或者間接調用,則這個函數在整個程序中無用。(2)main函數從某種角度來講,它代表了當前這個程序,或者說是整個程序;main函數的開始意味著整個程序開始執行,main函數的結束返回意味著整個程序的結束。(3)誰執行了這個程序,誰就調用了main函數。03
Linux下一個程序執行的本質
(1)表面來看,Linux中在命令行中去./xx去執行一個可執行程序。(2)我們可以通過shell腳本來調用執行一個程序(下面會寫一個shell腳本)。(3)我們還可以在程序總去調用執行一個程序(fork exec),這個在Linux應用編程里面的文章里面有寫過這個,可以參考這篇文章——Linux系統下進程編程之exec族函數解析(四)(4)我們有多種方法來執行一個程序,但是本質上都是相同的。Linux中一個新程序的執行本質上是一個進程的創建、加載、運行、消亡。Linux中執行一個程序其實就是創建一個新進程,然后把這個程序丟進這個進程中去執行,直到結束。新進程是被誰開啟?在Linux中進程都是被它的的父進程fork出來的。(5)命令行本身就是一個進程(就是我們平時在Linux下打開一個終端),在命令行下去./xx執行一個程序,其實這個新程序是作為命令行進程的一個子進程去執行的。總之一句來說,一個程序被它的父進程所調用。(6)小結:main 函數返回給調用這個函數的父進程;父進程要這個這個返回值干嘛?父進程調用子進程來執行一個任務,然后子進程執行完后,通過main函數的返回值返回給父進程一個答復,這個答復一般是表示子進程的任務執行結果完成了還是錯誤的(0表示執行成功,負數時表示執行失敗)。04
實踐驗證獲取main的返回值
(1)用shell腳本執行程序可以獲取程序的返回值并且打印出來:??#include???int?main(void){
???????????????????????return?0;
??}
然后我再創建一個shell腳本:shell腳本里面的內容為:??#!/bin/sh
?./a.out
?echo?$?
執行結果為:說明:Linux ?shell中用$?這個符號來存儲和表示上一個程序執行結果(這里就是./a.out)。#!/bin/sh這個書寫shell腳本的格式。
argc、argv
01
main的書寫形式
一般正規main函數的書寫形式有三種:?int?main(void)int?main(int?argc,?char?**argv)int?main(int?argc,?char?*argv[])02
誰給main函數傳參
(1)調用main函數所在的程序的它的父進程給main函數傳參,并且接收main的返回值。03
為什么要給main函數傳參
(1)首先,main函數不傳參是可以的,也就是說父進程調用子進程并且給子進程傳參不是必須的;int main(void)這種形式就是不要傳參了。(2)有時候我們希望程序有一種靈活性,所以選擇在執行程序時通過傳參來控制程序中的運行,達到不需要重新編譯程序就可以改變程序運行結果的效果。下面我先一個簡單的程序為例來引出這個程序的靈活性:我們可以看到如果要改程序里面的內容的話,必須得修改源代碼才行,這樣靈活不是很好。下面就是我們要講的,給main函數傳參,來提高程序的靈活性。04
給main怎樣來傳參
(1)給main傳參通過argc和argv這兩個c語言預訂的參數一起實現。(2)argc是int類型的,表示運行程序的時候給main函數傳遞了幾個參數;而argv是一個字符串數組,這個數組用來存儲多個字符串,每個字符串就是我們給main函數傳的一個參數,argv[0]就是我們給main函數的第一個傳參,argv[1]就是傳給main的第二個參數,以此類推后面的傳參。運行結果:然后我在執行程序的時候,可以加參數:注意: (1)main函數傳參都是通過字符串傳進去。 (2)程序被調用時傳參,各個參數之間是通過空格來間隔的。 (3)在程序內部如果要使用argv,那么最好先檢查一下argc。總結今天的分享就到這里結束了,關于shell腳本的教程,后面也會專門寫一系列的文章來講的。
關注公眾號,每周分享至少3篇開源技術干貨,文章中如有沒看懂的地方可以私聊我,我看到了會立馬回復你,個人微信號:a18879499804,在看的話,幫忙點個贊,非常感謝!
總結
以上是生活随笔為你收集整理的c语言 方程改main的值_c语言main函数里的参数argv和argc解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WCF揭秘学习笔记(5):WF定制活动
- 下一篇: BindeService