1. 程式人生 > 實用技巧 >關於int main(int argc, const char** argv) 中arg和argv引數的解析

關於int main(int argc, const char** argv) 中arg和argv引數的解析

關於int main(int argc, const char** argv) 中arg和argv引數的解析

1. 帶形參的main函式用法

  • 帶形參的main函式,如 main( int argc, char* argv[], char **env ) ,是UNIX、Linux以及Mac OS作業系統中C/C++的main函式標準寫法,並且是血統最純正的main函式寫法。
  • 在如今的Visual Studio編譯器中,main()函式帶有引數argc和argv或者不帶,即無論是否在函式體中使用argc和argv,返回值為void或不為void,都是合法的。
  • 一般有很多變體:
//  返回值整形帶參的main函式
int main(int argc, const char** argv){


return 0;
}
//  返回值整形不帶參的main函式
int main(){


return 0;
}
//  返回值為void的main函式
void main(){


return 0;
}

2. argc,argv的具體含義

  • 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為其對應的值。平時使用到的比較少。