C語言中main函數(shù)兩個(gè)參數(shù)的作用
一般我們?cè)谑褂肅語言時(shí)不太用到main函數(shù)自帶的參數(shù),因此最常見的main函數(shù)就像下面這樣。
int main()
{
...
...
}上面這種main函數(shù)是省略了其形參的,C語言中規(guī)定main函數(shù)的參數(shù)只能有兩個(gè),習(xí)慣上這兩個(gè)參數(shù)寫為argc和argv,其中,第一個(gè)形參argc為整形,第二個(gè)參數(shù)argv為指向字符串的指針數(shù)組。因此,如果不省略其形參的話,真實(shí)的main函數(shù)就像下面這樣定義。
int main(int argc,char **argv)
{
...
...
}或者下面這樣。
int main(int argc,char *argv[])
{
...
...
}說清楚這兩個(gè)參數(shù)的類型后,那么它們的功能是什么,或者有什么用處。先看下面一個(gè)例子。
#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]);
}寫好這個(gè)C程序后,在終端使用下面的命令將其編譯為可執(zhí)行文件。
gcc filename.c -o filename
然后執(zhí)行這個(gè)可執(zhí)行文件,執(zhí)行結(jié)果如下圖所示。

可以看到,第一個(gè)參數(shù)argc就是我們?cè)诿钚休斎氲膮?shù)的個(gè)數(shù),而第二個(gè)參數(shù)中argv[0]為自身運(yùn)行目錄的路徑和程序名,因?yàn)槲疫@里直接在該可執(zhí)行文件所在的文件夾下,因此路徑就是當(dāng)前路徑./,程序名就是這個(gè)可執(zhí)行文件的名字。第一次我們只是執(zhí)行了該文件,并沒有傳入?yún)?shù),因此argv[1]就是null的,再往后,我們?cè)?/a后再加一個(gè)用戶輸入的參數(shù),那么這個(gè)參數(shù)就被傳到了argv[1]里面了。優(yōu)化一下這個(gè)程序,代碼如下。
#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]);
}這樣不管我們?cè)趫?zhí)行這個(gè)文件時(shí)傳入多少個(gè)參數(shù),各個(gè)參數(shù)的值都會(huì)幫我們打印出來。

總結(jié)一下,main函數(shù)中第一個(gè)參數(shù)(整型)就是統(tǒng)計(jì)我們?cè)诿钚袀魅氲膮?shù)個(gè)數(shù),其中,輸入的各個(gè)參數(shù)之間用空格隔開。第二個(gè)參數(shù)(字符指針數(shù)組)是存放用戶輸入的,下標(biāo)為0的存放的是可執(zhí)行文件的路徑及名稱,大于0的下標(biāo)存放的參數(shù)都是由用戶輸入的。這些由用戶在命令行輸入的值在程序里是直接可以使用的,例如argv[1]=1,然后在程序中將用戶輸入的這個(gè)參數(shù)通過write函數(shù)寫入,那么它就可以控制某個(gè)設(shè)備打開或者關(guān)閉,大致就是這個(gè)用法。因此,合理的使用main函數(shù)中的這兩個(gè)參數(shù),可以更好的幫我們達(dá)成目的。
到此這篇關(guān)于C語言中main函數(shù)兩個(gè)參數(shù)的作用的文章就介紹到這了,更多相關(guān)main函數(shù)參數(shù)的作用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Go?的入口函數(shù)和包初始化的使用
- 細(xì)說webpack源碼之compile流程-入口函數(shù)run
- C語言中main函數(shù)與命令行參數(shù)詳細(xì)講解
- C語言main()函數(shù)的參數(shù)問題詳解
- C語言 main 函數(shù)詳情
- c語言中main函數(shù)用法及知識(shí)點(diǎn)總結(jié)
- C語言main函數(shù)的三種形式實(shí)例詳解
- C語言中 int main(int argc,char *argv[])的兩個(gè)參數(shù)詳解
- c語言main函數(shù)使用及其參數(shù)介紹
- C語言的入口函數(shù)的實(shí)現(xiàn)
相關(guān)文章
VC創(chuàng)建圓角dialog的實(shí)現(xiàn)方法
這篇文章主要介紹了VC創(chuàng)建圓角dialog的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了圓角dialog對(duì)話框的創(chuàng)建步驟與相關(guān)操作技巧,需要的朋友可以參考下2016-08-08
C++實(shí)現(xiàn)LeetCode(84.直方圖中最大的矩形)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(84.直方圖中最大的矩形),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C++實(shí)現(xiàn)LeetCode(28.實(shí)現(xiàn)strStr()函數(shù))
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(28.實(shí)現(xiàn)strStr()函數(shù)),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C++實(shí)現(xiàn)稀疏矩陣的壓縮存儲(chǔ)實(shí)例
本篇文章主要介紹了C++實(shí)現(xiàn)稀疏矩陣的壓縮存儲(chǔ)實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06
C++map,set,multiset,multimap詳細(xì)解析
在C++標(biāo)準(zhǔn)模板庫(STL)中,容器分為關(guān)聯(lián)式容器和序列式容器兩大類,關(guān)聯(lián)式容器主要包括set、map、multiset和multimap,通過索引來訪問元素,本文給大家介紹C++?map,set,multiset,multimap的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧2024-09-09
C++實(shí)現(xiàn)循環(huán)隊(duì)列
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)循環(huán)隊(duì)列,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01
詳解C語言中不同類型的數(shù)據(jù)轉(zhuǎn)換規(guī)則
這篇文章給大家講解不同類型數(shù)據(jù)間的混合運(yùn)算與類型轉(zhuǎn)換,有自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換,針對(duì)每種轉(zhuǎn)換方法小編給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-07-07

