關於C++&Java中命令列編譯的問題

來源:互聯網
上載者:User

 關於C++&Java中命令列編譯的問題

本文講述有關C++/C和JAVA中命令列編譯的有關知識.

在實際編程中,有時會碰到main()帶參數的情景。記得我第一次在Borlan C++ Builder裡面產生一個控制台程式的時候,
程式自動產生了一個帶參數的main():

void main(int argc, char * argv[])

當時覺得很奇怪,
現在明白了, 通過main()函數的參數給程式增加一些處理資訊,可以使程式和使用者實現更多互動通訊.
如果你的程式需要命令列參數編譯的話,那麼來源程式的主函數main()就需要帶參數—也就是所謂的命令列參數。帶有參數的main()函數頭格式為:

void main(int argc, char * argv[])
或void main(int argc, char ** argv)

其實,argc和argv也可以寫成其他的合法標識符(identifier)來表示,我在這裡遵從一般情況.

下面來看看這兩個參數的具體含義:

第一個參數argc是int型的,它用來存放命令列參數的個數,實際上argc所存放的數值比命令列參數的個數多1,即將命令字(可執行檔名)也計算在內。

第二個參數argv是一個一維的一級指標數組,它是用來存放命令列中各個參數和命令字的字串的,並且規定:

argv[0]存放命令字

argv[1]存放命令列中第一個參數

argv[2]存放命令列中第二個參數

這裡,argc的值和argv[]各元素的值都是系統自動組賦值的。

在這裡講述帶參數的main()函數實際上是對指標數組應用的一個具體執行個體。

下面是一個可以進行命令列參數編譯的具體例子(VC++6.0下調試通過):

//test.cpp

#include <iostream.h>

void main(int argc, char *argv[])

{

cout<<"The number of command line arguments is:"<<argc<<endl;

cout<<"The program name is:"<<argv[0]<<endl;

if (argc>1)

{ cout<<"The command line arguments:\n";

for (int i=1; i<argc; i++)

cout<<argv[i]<<endl;

}}

上述源檔案經過編譯串連後產生可執行檔test.exe.
然後在VC中,
我們進行如下設定:
在 Project-->Setting -->Debug-->Program Arguments裡面任意設定命令列參數(隨便輸入啦):

This is the first time I post documents here.^_^

然後運行,看看你會得到什麼結果……自己分析一下吧…

 

C++中的命令列和Java中的命令列編譯有些小小的差別,
對於用public static void main(String args[])作為函數入口的Java程式, args[0]
放命令列中第一個參數,arg[1]
存放命令列中第二個參數…這和C/C++語言是不相同的.還有,在Java裡面沒有相應的規定一個參數來存放命令列的個數(反正我沒找到),而在C++/C裡面有argc.這裡提供一個Java程式員認證裡面的一道關於命令列編譯的題目:

//Test_87.java

public class Test_87{

public static void main (String []args) {

String foo = args[1];

String bar = args[2];

String baz = args[3];

System.out.println("baz=" + baz);

}

}

編譯後執行命令: java Test_87 1 2 3 4

螢幕輸出的結果是:

baz=4

(JDK1.4下調試通過.)

 

請各位多多指教.

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.