C++中int?main(int?argc,?char**?argv)的參數(shù)使用
int main(int argc, char** argv)
是 C 和 C++ 程序的入口點,其中 argc
和 argv
是用來接收從命令行傳遞給程序的參數(shù)的。下面我將詳細解釋這兩個參數(shù)的含義,并給出一個例子來幫助理解。
參數(shù)解釋
int argc
:argc
是 "argument count" 的縮寫,表示傳遞給程序的命令行參數(shù)的數(shù)量。它至少為 1,因為命令行上總是至少有一個參數(shù):程序的名稱。
char** argv
或char *argv[]
:argv
是 "argument vector" 的縮寫,是一個指向字符指針數(shù)組的指針。每個元素
argv[i]
都是一個指向 C 字符串的指針,這個字符串包含了第i
個命令行參數(shù)。按照慣例,
argv[0]
是程序的名稱。argv
數(shù)組以 NULL 指針結束,但這個 NULL 指針通常不包含在argc
計數(shù)之內。
舉例說明
假設你有以下 C++ 程序:
#include <iostream> int main(int argc, char** argv) { std::cout << "Program name: " << argv[0] << std::endl; for (int i = 1; i < argc; ++i) { std::cout << "Argument " << i << ": " << argv[i] << std::endl; } return 0; }
如果你將這個程序編譯為 my_program
并從命令行運行它,如下所示:
./my_program hello world 123
Program name: ./my_program Argument 1: hello Argument 2: world Argument 3: 123
在這個例子中:
argc
的值是 4,因為有四個參數(shù):程序名(./my_program
)和三個用戶提供的參數(shù)(hello
,world
,123
)。argv[0]
指向字符串"./my_program"
。argv[1]
指向字符串"hello"
。argv[2]
指向字符串"world"
。argv[3]
指向字符串"123"
。注意這里沒有
argv[4]
,因為數(shù)組索引是從 0 開始的,并且在這個例子中只有四個元素。訪問argv[4]
會導致未定義行為,因為它超出了數(shù)組的邊界。實際上,按照 C 和 C++ 的標準,argv
數(shù)組并不保證以 NULL 指針結束,盡管在某些系統(tǒng)上可能是這樣。你應該總是依賴argc
來確定參數(shù)的數(shù)量。
基于OCCT的例子:
這是一個簡單的C++程序,它用于讀取STEP文件并將其內容轉換為另一種格式。
#include <STEPControl_Reader.hxx> ? int main(int argc, char** argv) { // Read from file. TopoDS_Shape shape; // if ( argc > 1 ) { STEPControl_Reader readerBase; readerBase.ReadFile(argv[1]); std::cout << readerBase.TransferRoots() << "Base roots transferred" << std::endl; } else { std::cout << "Please, pass filename (STEP) as an argument." << std::endl; return 1; } ? return 0; } ?
char** argv與char* argv[]區(qū)別
- 指針是個地址。
- char *a: a的值包含字符型數(shù)據,取消對a的引用 (*a) 得到一個字符,不取消引用得到一個字符串,printf("%c",*a) 輸出一個字符或者 printf("%s",a)輸出字符串;
- char **a: a的值包含一個地址,該地址包含字符字符型數(shù)據,取消對a的引用(*a),得到該地址,再取消對該地址的引用(**a),得到一個字符,printf("%c",**a) 輸出一個字符 printf("%s",*a) 輸出字符串;
- char *a[]: a是一個數(shù)組,數(shù)組的元素是地址(地址其實就是指針),地址包含的值是字符型數(shù)據,printf("%c",*a[i]) 輸出一個字符,printf("%s",a[i])) 輸出字符串;
- char *a或char **a可以改變a的值,char a*[]不能改變a的值。
到此這篇關于C++中int main(int argc, char** argv)的參數(shù)使用的文章就介紹到這了,更多相關C++ int main(int argc, char** argv)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C++ 字符串string和整數(shù)int的互相轉化操作
這篇文章主要介紹了C++ 字符串string和整數(shù)int的互相轉化操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12Matlab實現(xiàn)統(tǒng)計集合中各元素出現(xiàn)次數(shù)的示例代碼
統(tǒng)計數(shù)組中各個元素數(shù)量是一個很常用的功能,本文主要為大家介紹了如何利用Matlab優(yōu)雅的統(tǒng)計集合中各元素出現(xiàn)的次數(shù),感興趣的可以了解一下2022-05-05