天天看點

在linux下關于int main( int argc, char* argv[] )含義解析及調試

在示例程式中經常可以看到argc和argv這兩個參數 ,在調試代碼過程中遇到main函數為int main( int argc, char* argv[] ) 這種類型時往往會報錯,或者是運作起來了但指令視窗一閃而過,沒有出來結果。網上關于這方面的資料也有點亂,在看淺墨大大一書發現其中有關于這一方面的講解甚為詳細,抑制不住要與大家分享的沖動,現結合網上内容并予以實驗,整理如下:

一、argc、argv的具體含義

帶形參的main函數,如 main( int argc, char* argv[], char *env ) ,是UNIX、Linux以及Mac OS作業系統中C/C++的main函數标準寫法,并且是血統最純正的main函數寫法。

*argc和argv參數在用指令行編譯程式時有用。main( int argc, char argv[], char **env ) 中

第一個參數,int型的argc,為整型,用來統計程式運作時發送給main函數的指令行參數的個數,在VS中預設值為1。

第二個參數,char型的argv[],為字元串數組,用來存放指向的字元串參數的指針數組,每一個元素指向一個參數。各成員含義如下:

argv[0]指向程式運作的全路徑名

argv[1]指向在DOS指令行中執行程式名後的第一個字元串

argv[2]指向執行程式名後的第二個字元串

argv[3]指向執行程式名後的第三個字元串

argv[argc]為NULL

第三個參數,char**型的env,為字元串數組。env[]的每一個元素都包含ENVVAR=value形式的字元串,其中ENVVAR為環境變量,value為其對應的值。平時使用到的比較少。

二、調試方法 ;

#include <stdio.h>
using namespace std;
 
int main(int argc, char ** argv)
{
    int i;
    for (i = 0; i < argc; i++)
        printf("Argument %d is %s\n", i, argv[i]);
    return 0;
}
           
在linux下關于int main( int argc, char* argv[] )含義解析及調試

在linux下找到生成對應得可執行檔案,在終端輸入以下指令即可:

在linux下關于int main( int argc, char* argv[] )含義解析及調試

繼續閱讀