日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux中 C++ main函数参数argc和argv含义及用法

發布時間:2025/3/8 linux 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux中 C++ main函数参数argc和argv含义及用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Linux中 C++ main函數參數argc和argv含義及用法

簡介

argc 是 argument count的縮寫,表示傳入main函數的參數個數;

argv 是 argument vector的縮寫,表示傳入main函數的參數序列或指針,并且第一個參數argv[0]一定是程序的名稱,并且包含了程序所在的完整路徑,所以確切的說需要我們輸入的main函數的參數個數應該是argc-1個;

實驗

直接運行

#include <iostream>using namespace std;int main(int argc, char** argv){for (int i=0; i<argc; ++i){cout << "argument[" << i << "] is : " << argv[i] << endl;}return 0; }

注意:argv是指向指針的指針,main函數的第二個參數char \*argv[]也可以替換為 char **argv,兩者是等價的。

下面我們在Linux命令行編譯運行該程序:

g++ -c test.cpp -o test.o g++ test.o -o test ./test

輸出:

argument[0] is : ./test

可以看到,直接運行的話輸出的argv只有一個參數,即本文件的路徑。

傳入參數

既然有argc作為argv的計數,那么設計時的考量就肯定不可能是只有一個參數。那么怎樣想main函數傳入參數呢?

在Windows下,可以通過在集成開發環境IDE(如VS2019)中設置命令參數。

而在Linux下,我們則可以直接通過在命令行運行文件時傳入命令參數。

同樣時上面的程序,如果我們這樣運行:

./test hello world !

注意中間用空格分隔,則會得到輸出:

argument[0] is : ./test argument[1] is : hello argument[2] is : world argument[3] is : !

可以看到,三個字符串hello,world,!分別作為argv的第1,2,3個參數傳入了main函數。

這樣我們就可以很方便地在程序運行時,通過命令行向程序傳遞參數。這是十分有用的,比如用opencv打開指定的圖片,存儲指定的文件等,只要是在寫源代碼時不確定,需要根據運行時的具體輸入作為參數的程序,均可使用argv參數。

例程

例1

例如,我們寫一個函數,將最后一個argv參數作為文件名,將前面的參數作為文本內容,寫到該文件中:

#include <iostream> #include <fstream> #include <string>using namespace std;int main(int argc, char** argv){string fileName = argv[argc-1];ofstream outfile(fileName, ios::trunc);for (int i=1; i<argc-1; ++i){outfile << argv[i] << ' ';}outfile << endl;outfile.close();return 0; }

編譯運行:

g++ -c writeArgv.cpp -o writeArgv.o g++ writeArgv.o -o writeArgv ./writeArgv Hello main, I am writing argc and argv. writeArgv.txt

成功在writeArgv.txt中寫入:Hello main, I am writing argc and argv.

例2

用argv命令行傳參的方式傳入opencv要打開的圖像文件:

#include <iostream> #include <core/core.hpp> #include <highgui/highgui.hpp> using namespace std; using namespace cv;void main(int argc,char **argv){Mat image=imread(argv[1]);imshow("Lena",image);waitKey(); }

注意

  • 可以有argc和argv,但是在函數體中沒有用,這一點和其他函數也是類似的。

  • 有時還有第三個參數,char** env,為字符串數組。env的每一個元素都包含ENVVAR=value形式的字符串,其中ENVVAR為環境變量,value為其對應的值。平時使用到的比較少,一般只用前兩個參數argc、argv。

  • 另外要提醒的是,變量名argc和argv與其他常規C++變量名一樣,只要合理且符合規范即可,不一定非要叫argc, argv,如:

    int main(int count, char** params){// write your code }

    都是可以的。

  • Ref:

    https://blog.csdn.net/dcrmg/article/details/51987413

    https://blog.csdn.net/dgreh/article/details/80985928

    總結

    以上是生活随笔為你收集整理的Linux中 C++ main函数参数argc和argv含义及用法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。