C語言中main函數(shù)兩個參數(shù)的作用
一般我們在使用C語言時不太用到main函數(shù)自帶的參數(shù),因此最常見的main函數(shù)就像下面這樣。
int main() { ... ... }
上面這種main函數(shù)是省略了其形參的,C語言中規(guī)定main函數(shù)的參數(shù)只能有兩個,習(xí)慣上這兩個參數(shù)寫為argc和argv,其中,第一個形參argc為整形,第二個參數(shù)argv為指向字符串的指針數(shù)組。因此,如果不省略其形參的話,真實的main函數(shù)就像下面這樣定義。
int main(int argc,char **argv) { ... ... }
或者下面這樣。
int main(int argc,char *argv[]) { ... ... }
說清楚這兩個參數(shù)的類型后,那么它們的功能是什么,或者有什么用處。先看下面一個例子。
#include <stdio.h> int main(int argc, char **argv) { printf("argc = %d\n",argc); printf("argv[0] = %s\n",argv[0]); printf("argv[1] = %s\n",argv[1]); }
寫好這個C程序后,在終端使用下面的命令將其編譯為可執(zhí)行文件。
gcc filename.c -o filename
然后執(zhí)行這個可執(zhí)行文件,執(zhí)行結(jié)果如下圖所示。
可以看到,第一個參數(shù)argc就是我們在命令行輸入的參數(shù)的個數(shù),而第二個參數(shù)中argv[0]為自身運行目錄的路徑和程序名,因為我這里直接在該可執(zhí)行文件所在的文件夾下,因此路徑就是當(dāng)前路徑./,程序名就是這個可執(zhí)行文件的名字。第一次我們只是執(zhí)行了該文件,并沒有傳入?yún)?shù),因此argv[1]就是null的,再往后,我們在./a后再加一個用戶輸入的參數(shù),那么這個參數(shù)就被傳到了argv[1]里面了。優(yōu)化一下這個程序,代碼如下。
#include <stdio.h> int main(int argc, char **argv) { printf("argc = %d\n",argc); for(int i = 0; i < argc; i++) printf("argv[%d] = %s\n",i,argv[i]); }
這樣不管我們在執(zhí)行這個文件時傳入多少個參數(shù),各個參數(shù)的值都會幫我們打印出來。
總結(jié)一下,main函數(shù)中第一個參數(shù)(整型)就是統(tǒng)計我們在命令行傳入的參數(shù)個數(shù),其中,輸入的各個參數(shù)之間用空格隔開。第二個參數(shù)(字符指針數(shù)組)是存放用戶輸入的,下標(biāo)為0的存放的是可執(zhí)行文件的路徑及名稱,大于0的下標(biāo)存放的參數(shù)都是由用戶輸入的。這些由用戶在命令行輸入的值在程序里是直接可以使用的,例如argv[1]=1,然后在程序中將用戶輸入的這個參數(shù)通過write函數(shù)寫入,那么它就可以控制某個設(shè)備打開或者關(guān)閉,大致就是這個用法。因此,合理的使用main函數(shù)中的這兩個參數(shù),可以更好的幫我們達(dá)成目的。
到此這篇關(guān)于C語言中main函數(shù)兩個參數(shù)的作用的文章就介紹到這了,更多相關(guān)main函數(shù)參數(shù)的作用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++解密Chrome80版本數(shù)據(jù)庫的方法示例代碼
這篇文章主要介紹了C++解密Chrome80版本數(shù)據(jù)庫的方法示例代碼,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05