C語言中main函數(shù)與命令行參數(shù)詳細(xì)講解_第1頁
C語言中main函數(shù)與命令行參數(shù)詳細(xì)講解_第2頁
C語言中main函數(shù)與命令行參數(shù)詳細(xì)講解_第3頁
C語言中main函數(shù)與命令行參數(shù)詳細(xì)講解_第4頁
C語言中main函數(shù)與命令行參數(shù)詳細(xì)講解_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第C語言中main函數(shù)與命令行參數(shù)詳細(xì)講解目錄一、main函數(shù)的概念二、main函數(shù)的本質(zhì)命令行三、main函數(shù)的參數(shù)四、main函數(shù)一定是程序執(zhí)行的第一個(gè)函數(shù)嗎五、小結(jié)

一、main函數(shù)的概念

C語言中main函數(shù)稱之為主函數(shù)一個(gè)C程序是從main函數(shù)開始執(zhí)行的

二、main函數(shù)的本質(zhì)

main函數(shù)是操作系統(tǒng)調(diào)用的函數(shù)操作系統(tǒng)總是將main函數(shù)作為應(yīng)用程序的開始操作系統(tǒng)將main函數(shù)的返回值作為程序的退出狀態(tài)

下面看一下main函數(shù)的返回值:

A.c:

#includestdio.h

intmain()

printf("I'mA!\n");

return0;

}

B.c:

#includestdio.h

intmain()

printf("I'mB!\n");

return99;

}

在windows下通過VS012命令行編譯代碼,如果對(duì)命令行編譯不熟悉,請(qǐng)看《命令行》,否則跳過該部分

以B.c為例,編譯后通過echo%ERRORLEVEL%命令后,看到返回值為99

下面再來進(jìn)行一個(gè)實(shí)驗(yàn),先將A進(jìn)行編譯,然后輸入B.exeA.exe,發(fā)現(xiàn)只打印出ImB!,因?yàn)锽.exe運(yùn)行結(jié)束后操作系統(tǒng)返回了99,99在操作系統(tǒng)看來B.exe沒有正常運(yùn)行退出,所以操作系統(tǒng)就不會(huì)運(yùn)行A.exe。

如果輸入A.exeB.exe,結(jié)果如下,這是因?yàn)锳.exe運(yùn)行結(jié)束后正常返回0給操作系統(tǒng),所以就會(huì)往下執(zhí)行B.exe

命令行

以下面的代碼為例

test.h:

#ifndef_TEST_H_

#define_TEST_H_

#includestdio.h

classTest

public:

Test(constchar*s)

printf("%s\n",s);

#endif

test.cpp:

#include"test.h"

Testt4("t4");

intmain()

Testt5("t5");

}

t1.cpp:

#include"test.h"

Testt1("t1");

t2.cpp:

#include"test.h"

Testt2("t2");

t3.cpp:

#include"test.h"

Testt3("t3");

第一步,打開VS2012,選擇工具-VisualStudio命令提示

第二步,實(shí)用cd/d進(jìn)入需要編譯的文件夾。(注意換盤符需要輸入/d)

我想要編譯的文件在C:\Users\HuZeQiu\Desktop\demo文件夾里。

輸入cd/dC:\Users\HuZeQiu\Desktop\demo,按下回車鍵,如下,就轉(zhuǎn)到了目的文件夾

第三步,輸入cltest.cppt2.cppt1.cppt3.cpp-otest.exe編譯程序。(cl命令是用來編譯程序)按下回車鍵后開始編譯,生成test.exe可執(zhí)行文件,如下:

第四步,運(yùn)行test.exe,直接輸入test.exe即可,就可以看到運(yùn)行結(jié)果

編譯后的文件夾如下:

三、main函數(shù)的參數(shù)

程序執(zhí)行時(shí)可以向main函數(shù)傳遞參數(shù)

gcc編譯器的常見用法:

下面看一個(gè)main函數(shù)的參數(shù)示例:

#includestdio.h

intmain(intargc,char*argv[],char*env[])

inti=0;

printf("==============Beginargv==============\n");

for(i=0;iargc;i++)

printf("%s\n",argv[i]);

printf("==============Endargv==============\n");

printf("\n");

printf("\n");

printf("\n");

printf("==============Beginenv==============\n");

for(i=0;env[i]!=NULL;i++)

printf("%s\n",env[i]);

printf("==============Endenv==============\n");

return0;

輸出結(jié)果如下:

delphi@delphi-vm:~$gcctest.c

delphi@delphi-vm:~$./a.outa.cb.cc.c==============Beginargv==============./a.outa.cb.cc.c==============Endargv==============

==============Beginenv==============

ORBIT_SOCKETDIR=/tmp/orbit-delphiSSH_AGENT_PID=1781TERM=xtermSHELL=/bin/bashXDG_SESSION_COOKIE=6c560f89cd4609726ff940b800000007-1648713669.66817-1997070498WINDOWID=71303204QTDIR=/usr/local/TrolltechGNOME_KEYRING_CONTROL=/tmp/keyring-ZV2hRjGTK_MODULES=canberra-gtk-moduleUSER=delphiLD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.7.4/lib:/usr/local/Trolltech/qtcreator-2.4.1/lib:LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:SSH_AUTH_SOCK=/tmp/keyring-ZV2hRj/sshDEFAULTS_PATH=/usr/share/gconf/gnome.default.pathSESSION_MANAGER=local/delphi-vm:@/tmp/.ICE-unix/1750,unix/delphi-vm:/tmp/.ICE-unix/1750USERNAME=delphiXDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdgDESKTOP_SESSION=gnomePATH=/usr/local/Trolltech/Qt-4.7.4/bin:/usr/local/Trolltech/qtcreator-2.4.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/gamesQT_IM_MODULE=ximPWD=/home/delphiXMODIFIERS=@im=ibusGDM_KEYBOARD_LAYOUT=cnLANG=zh_CN.utf8GNOME_KEYRING_PID=1731MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.pathGDM_LANG=zh_CN.utf8GDMSESSION=gnomeSHLVL=1HOME=/home/delphiLANGUAGE=zh_CN:zhGNOME_DESKTOP_SESSION_ID=this-is-deprecatedLOGNAME=delphiXDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-k3N1W1OvOx,guid=5f504019e47302c3a7df0e2000000017LESSOPEN=|/usr/bin/lesspipe%sWINDOWPATH=7DISPLAY=:0.0GTK_IM_MODULE=ibusLESSCLOSE=/usr/bin/lesspipe%s%sXAUTHORITY=/var/run/gdm/auth-for-delphi-omqXhW/databaseCOLORTERM=gnome-terminal_=./a.out==============Endenv==============

四、main函數(shù)一定是程序執(zhí)行的第一個(gè)函數(shù)嗎

下面看一個(gè)示例:

#includestdio.h

#ifndef__GNUC__

#define__attribute__(x)

#endif

__attribute__((constructor))

voidbefore_main()

printf("%s\n",__FUNCTION__);

__attribute__((destructor))

voidafter_main()

printf("%s\n",__FUNCTION__);

intmain()

printf("%s\n",__FUNCTION__);

return0;

}

輸出結(jié)果如下:

constructor告訴編譯器在main函

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論