關於帶引數的main函式

2021-09-30 08:03:24 字數 2105 閱讀 9193

main()函式既可以是無參函式,也可以是有參的函式。對於有參的形式來說,就需要向其傳遞引數。但是其它任何函式均不能呼叫main()函式,當然也無法向main()函式傳遞,只能由程式之外傳遞而來。這個具體的問題怎樣解決呢?

我們先看一下main()函式的帶參的形式:

main(argc,ar**)

int argc,char *ar**;

從函式引數的形式上看,包含乙個整型和乙個指標陣列。agrc為引數的個數,ar**[0]為自身執行程式名,ar**[1]指向第乙個引數、ar**[2]指向第二個引數、等等。

對main()函式,既然不能由其它函式呼叫和傳遞引數,就只能由系統在啟動執行時傳遞引數了。在作業系統環境下,一條完整的執行命令應包括兩部分:命令與相應的引數。其格式為:

命令引數1引數2....引數n

此格式也稱為命令列。命令列中的命令就是可執行檔案的檔名,其後所跟引數需用空格分隔,並為對命令的進一步補充,也即是傳遞給main()函式的引數。

命令列與main()函式的引數存在如下的關係:

設命令行為:program str1 str2 str3 str4 str5

其中program為檔名,也就是乙個由program.c經編譯、鏈結後生成的可執行檔案program.exe,其後各跟5個引數。對main() 函式來說,它的引數argc記錄了命令列中命令與引數的個數,共6個,指標陣列的大小由引數argc的值決定,即為char*ar**[6]。

陣列的各指標分別指向乙個字串。應當引起注意的是接收到的指標陣列的各指標是從命令列的開始接收的,首先接收到的是命令,其後才是引數。

main()函式還有第三個引數env,env: 安符串陣列。env 的每乙個元素都包含envvar=value形式的字元

串。其中envvar為環境變數如path或87。value 為envvar的對應值如c:/dos, c:

/turboc(對於path) 或yes(對於87)。

所以常見的形式是這樣的:

main()

main(int argc)

main(int argc, char *ar**)

main(int argc, char *ar**, char *env)

其中第二種情況是合法的,但一般沒有這麼用的。

以下提供一樣例程式example.exe, 演示如何在main()函式中使用三個引數:

/*program name example.exe*/

#include

#include

main(int argc, char *ar**, char *env)

如果在dos 提示符下, 按以下方式執行example.exe:

c:/example first_argument "argument with blanks" 3 4 "last but

one" stop!

注意: 可以用雙引號括起內含空格的引數, 如本例中的:   " argument

with blanks"和"last but one")。

結果是這樣的:

the value of argc is 7

these are the 7 command-linearguments passed to main:

ar**[0]:c:/turbo/example.exe

ar**[1]:first_argument

ar**[2]:argument with blanks

ar**[3]:3

ar**[4]:4

ar**[5]:last but one

ar**[6]:stop!

ar**[7]:(null)

the environment string(s) on this system are:

env[0]: comspec=c:/command.com

env[1]: prompt=$p$g            /*視具體設定而定*/

env[2]: path=c:/dos;c:/tc      /*視具體設定而定*/

應該提醒的是: 傳送main() 函式的命令列引數的最大長度為128 個字元 (包

括引數間的空格), 這是由dos 限制的。

帶引數的main函式

void main int argc,char argv 程式中的argc 0代表什麼呢?while argc 0 printf s n argv 類while argc 0 main函式中所帶的兩個引數的含義這樣的 argc表示執行本命令 編繹連線產生的exe檔案 時所帶引數的個數,注意這裡包含e...

帶引數的main函式

在學習c語言的時候,我們知道除主函式外,函式是可以互相呼叫的,主函式可以呼叫其他函式,其他函式不能呼叫主函式,主函式是被系統呼叫的。函式呼叫時可以帶引數也可以不帶引數,這完全取決於該函式是有參函式還是無參函式。主函式可不可以帶引數呢?回答是肯定的,這種引數是在程式運算時給出的所以又叫命令列引數。下面...

帶引數的main函式

在學習c語言時,一般常見的main函式是這樣的 int main void 上面是個簡單的求和函式,簡單易懂,但有個缺點,程式執行時需要和使用者互動 一次次詢問輸入資料 操作起來不便捷。能不能像shell命令列那樣在呼叫函式時一次把引數都輸進去呢?答案是有的 main函式可以帶兩個引數int arg...