1. 程式人生 > >main函式中兩個引數的用法(轉)

main函式中兩個引數的用法(轉)

main函式中兩個引數的用法

MSDN6.0中寫道:argc is An integer specifying how many arguments are passed to the program from the command line. Because the program name is considered an argument, argc is at least 1.
即是第一個表示引數的個數;第二個引數中argv[0]為自身執行目錄路徑和程式名,argv[1]指向第一個引數、argv[2]指向第二個引數、等等。
當你在CMD 命令列輸入帶引數的命令: XXX.exe /a /b
後面的/a /b等等內容,就是main函式用來接收的引數,你就可以自己根據引數的不同,來執行不同的程式碼了.

#include "iostream"
using namespace std;
int main(int argc,char **argv)
{
cout<<argc<<endl<<argv[argc-1]<<endl;
return 0;
}
執行下知道argv[0]是exe的目錄具體位置.
這兩個引數用於在執行程式時,從外部給程式傳遞引數,其中argc中儲存了引數的個數,argv中分別儲存了各個引數.
例如一個程式中main()形如int main(int argc, char *argv[]),編譯連結後生成的可執行檔名為a.exe,那麼在命令列呼叫時如:
      a.exe -abc -def
    在上面的命令列中,a.exe是要執行的程式名,後面的abc和def就是傳入程式的兩個引數,這兩個引數就通過argc和argv傳入程式,注意這些引數都是字串.通過上面的呼叫,程式中,argc=3,a.exe是第一個引數,這個字串將儲存在argv[0]中,abc和def分別是第二和第三個引數,它們分別被儲存在argv[1]和argv[2]中.


不合法的main函式命令列引數表示形式是
A) main(int a,char *c[])     B) main(int arc,char **arv)
C) main(int argc,char *argv) D) main(int argv,char *argc[])
答案是C,

main的第2個引數應該為一個字元陣列指標,B的第二個引數是一個指向字元的指標的指標,也就是一個字串陣列;
C的第二個引數是一個指向字元的指標,也就是一個字串.

char **argv或者char *argv[]是個二維陣列,也可以理解為一個存放字元指標的陣列---字元指標陣列。每個元素存放一個字元指標,而字元指標又是可以指向一個字串的,這n個字串分別由argv[0]~~~argv[n]來指向.

這個就是指標陣列,不是別的,特別不是二維陣列

相關推薦

main函式引數用法

main函式中兩個引數的用法 MSDN6.0中寫道:argc is An integer specifying how many arguments are passed to the program from the command line. Because the program name is co

main函式引數用法總結

1、定義  C語言規定main函式的引數只能有兩個,習慣上這兩個引數寫為argc和argv。因此,main函式的函式頭可寫為: main (argc,argv)C語言還規定argc(第一個形參)必須是整型變數,argv( 第二個形參)必須是指向字串的指標陣列。加上形參說明後,main函式的

大資料學習之Scalamain函式的分析以及基本規則2

一、main函式的分析 首先來看我們在上一節最後看到的這個程式,我們先來簡單的分析一下,有助於後面的學習 object HelloScala { def main(args: Array[String]): Unit = { printl

習題 9.8 修改第6題的程式,增加一個fun函式,改寫main函式。改為在fun函式呼叫change和display函式。在fun函式使用物件的引用Student &作為形參。

C++程式設計(第三版) 譚浩強 習題9.8 個人設計 習題 9.8 修改第6題的程式,增加一個fun函式,改寫main函式。改為在fun函式中呼叫change和display函式。在fun函式中

第十五週oj訓練——寫一函式,將字串連線1052

問題及程式碼Description寫一函式,將兩個字串連線Input兩行字串Output連結後的字串Sample Input123 abcSample Output123abc解法一:用函式/*煙臺大學計算機與控制工程學院 2016 作者: 馬春澎 完成日期:2016年12月

java排序陣列升序第K小的數

如題:求兩個排好序的陣列的第K個小的數 思路一:歸併兩個有序陣列,按照順序合併,最後找到第K-1位置的數。時間複雜度為O(N) 思路二:在技術部落格上看到更好的思路,時間複雜度是OLog(m+n); 第k小的數字為x,那麼陣列1一定有i個數字小於x,陣列2一定有j個數字小於

js函式傳遞引數

function testmethod(param1,param2){     alert(param1);alert(param2); } <button onclick="testmetho

工程呼叫vs2015工程,相互呼叫

任務:想在try工程下,呼叫另一個工程speech_emotion的cpp函式 同一解決方案下,可以有多個工程相互呼叫,具體是要注意以下幾個內容: 1、呼叫speech_emotion中的.h檔案,需要增加路徑的引用,找到speech_emotion下的

Oracle MERGE語句的用法轉載

同時 sdn ble reat nth merge type href detail 原文章出處(http://blog.csdn.net/lichkui/article/details/4306299) MERGE語句是Oracle9i新增的語法,用來合並UPDATE和I

java正則表達式基本用法

code ack acea print 表達式 劃線 跟著 以及 n) https://www.cnblogs.com/xhj123/p/6032683.html 正則表達式是一種可以用於模式匹配和替換的規範,一個正則表達式就是由普通的字符(例如字符a到z)以及特殊字符(元

ajax遇到的小bug

字符 過去 方案 ima 錯誤 復選框 兩個 中項 技術分享 1.公司的一個因子系數配置頁面,可以勾選中多個復選框進行刪除,刪除後保存操作軌跡表。但不知道之前是誰這樣寫的 此挖坑人,對於選中的多個復選框循環調用後臺方法,但是這些請求都請求後臺了,執行完畢的先後順序並沒有保

合併連結串列c++

合併兩個連結串列(c++) 輸入的連結串列按照其元素從小到大的順序排序,輸出的連結串列也按從小到大的順序排序,請合併兩個連結串列 template<typename E> Link<E> * LList<E>::mergeList(LList<

scalasorted,sortby,sortwith的用法

scala中sorted,sortWith,sortBy用法詳解 2017年07月23日 23:07:51 bitcarmanlee 閱讀數:9249 版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/bitcarmanle

ZYNQ有CPU?——SGI非同步通訊

ZYNQ有兩個CPU?(三)——SGI非同步通訊 羅賓老師 嵌入式教師、碼峰社QQ群541931432 15 人讚了該文章 前面兩篇文章中我分享了ZYNQ上在Standalone環境下搭建AMP和用OCM共享記憶體傳遞資料的方法。而到目前為止實現的功能是在兩個CPU上跑了多執行

菜鳥教程 練習例項44-矩陣相加 python3

兩個 3 行 3 列的矩陣,實現其對應位置的資料相加,並返回一個新矩陣: X = [[12,7,3], [4 ,5,6], [7 ,8,9]] Y = [[

kafka重要的引數配置 記錄

replica.fetch.max.bytes:        在kafka的配置中,如果沒有定義 replica.fetch.max.bytes的值,server 會給一個預設值(1M),在短訊息的應用場景下通常是不會有什麼問題的,但是在訊息比較大的情況下,雖然可以在to

陣列個數相減相加的最大值

題目:有一個數組,找出陣列中前面的數減去後面的數的最大值。例如陣列{9,1,7,18,3,-2,20,4,0,5},最大值是18-(-2)或者20-0。 解法一:把陣列分為左右兩個部分,相減最大的兩個

Timer的定時排程函式schedule的四種用法Java

schedule的四種用法schedule(task,time)task-所安排的任務  time-執行任務的時間作用:在時間等於或者超過time的時候執行且僅執行一次import java.text.SimpleDateFormat; import java.util.Ca

IOS Block簡介與用法

Block簡介: Block的實際行為和Function很像,最大的差別是在可以存取同一個Scope的變數值。Block實體形式如下: ^(傳入引數列){行為主體}; Block實體開頭是“^”,接著是由小括號所包起來的引數列(比如 int a, int b, int c)

AndroidAPP間跳導致的異常問題及解決辦法

假設現有兩個APP:app1 和 app2 兩個app中均有兩個Activity:A 和 B 且兩個app的入口Activity均是:A 操作流程:app1.A ---> app.B ---> app2.A ---> app2.B 1.從app1.B向a