欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++中int?main(int?argc,?char**?argv)的參數(shù)使用

 更新時間:2024年01月04日 11:51:35   作者:QFJIZHI  
int?main(int?argc,?char**?argv)?是C和C++程序的入口點,其中argc和argv是用來接收從命令行傳遞給程序的參數(shù)的,本文就來介紹一下這兩個參數(shù)的含義,感興趣的可以了解一下的相關(guān)資料

int main(int argc, char** argv) 是 C 和 C++ 程序的入口點,其中 argc 和 argv 是用來接收從命令行傳遞給程序的參數(shù)的。下面我將詳細(xì)解釋這兩個參數(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 指針結(jié)束,但這個 NULL 指針通常不包含在 argc 計數(shù)之內(nèi)。

舉例說明

假設(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 并從命令行運(yùn)行它,如下所示:

./my_program hello world 123
Program name: ./my_program  
Argument 1: hello  
Argument 2: world  
Argument 3: 123

在這個例子中:

  • argc 的值是 4,因為有四個參數(shù):程序名(./my_program)和三個用戶提供的參數(shù)(helloworld123)。

  • argv[0] 指向字符串 "./my_program"

  • argv[1] 指向字符串 "hello"

  • argv[2] 指向字符串 "world"。

  • argv[3] 指向字符串 "123"

  • 注意這里沒有 argv[4],因為數(shù)組索引是從 0 開始的,并且在這個例子中只有四個元素。訪問 argv[4] 會導(dǎo)致未定義行為,因為它超出了數(shù)組的邊界。實際上,按照 C 和 C++ 的標(biāo)準(zhǔn),argv 數(shù)組并不保證以 NULL 指針結(jié)束,盡管在某些系統(tǒng)上可能是這樣。你應(yīng)該總是依賴 argc 來確定參數(shù)的數(shù)量。

基于OCCT的例子:

這是一個簡單的C++程序,它用于讀取STEP文件并將其內(nèi)容轉(zhuǎn)換為另一種格式。

#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ù)據(jù),取消對a的引用 (*a) 得到一個字符,不取消引用得到一個字符串,printf("%c",*a) 輸出一個字符或者 printf("%s",a)輸出字符串;
  • char **a: a的值包含一個地址,該地址包含字符字符型數(shù)據(jù),取消對a的引用(*a),得到該地址,再取消對該地址的引用(**a),得到一個字符,printf("%c",**a) 輸出一個字符 printf("%s",*a) 輸出字符串;
  • char *a[]: a是一個數(shù)組,數(shù)組的元素是地址(地址其實就是指針),地址包含的值是字符型數(shù)據(jù),printf("%c",*a[i]) 輸出一個字符,printf("%s",a[i])) 輸出字符串;
  • char *a或char **a可以改變a的值,char a*[]不能改變a的值。

到此這篇關(guān)于C++中int main(int argc, char** argv)的參數(shù)使用的文章就介紹到這了,更多相關(guān)C++ int main(int argc, char** argv)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Qt5.14.2使用虛擬鍵盤的關(guān)鍵代碼

    Qt5.14.2使用虛擬鍵盤的關(guān)鍵代碼

    對于Qwidget程序,使用qtvirtualkeyboard彈出鍵盤之后,鍵盤會浮于表面。使用VirtualkeyboardPushView模塊,自動根據(jù)情況把輸入視圖往上面推移,這篇文章主要介紹了Qt5.14.2使用虛擬鍵盤的關(guān)鍵代碼,需要的朋友可以參考下
    2022-09-09
  • 詳解C語言數(shù)據(jù)結(jié)構(gòu)之棧

    詳解C語言數(shù)據(jù)結(jié)構(gòu)之棧

    這篇文章主要為大家介紹了C語言數(shù)據(jù)結(jié)構(gòu)之棧,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Opencv使用Stitcher類圖像拼接生成全景圖像

    Opencv使用Stitcher類圖像拼接生成全景圖像

    這篇文章主要為大家詳細(xì)介紹了Opencv使用Stitcher類圖像拼接生成全景圖像,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Qt實現(xiàn)制作簡單的計算器

    Qt實現(xiàn)制作簡單的計算器

    計算器是我們生活中很常見的東西,它可以由多種語言多種方式來實現(xiàn)。本文主要介紹的是利用Qt實現(xiàn)的簡易計算器的制作,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-12-12
  • C++ 字符串string和整數(shù)int的互相轉(zhuǎn)化操作

    C++ 字符串string和整數(shù)int的互相轉(zhuǎn)化操作

    這篇文章主要介紹了C++ 字符串string和整數(shù)int的互相轉(zhuǎn)化操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • C++示例講解vector容器

    C++示例講解vector容器

    這篇文章主要介紹了C++?容器?Vector?的使用方法,Vector?是一個能夠存放任意類型的動態(tài)數(shù)組,有點類似數(shù)組,是一個連續(xù)地址空間,下文更多詳細(xì)內(nèi)容的介紹,需要的小伙伴可以參考一下
    2022-07-07
  • Matlab實現(xiàn)統(tǒng)計集合中各元素出現(xiàn)次數(shù)的示例代碼

    Matlab實現(xiàn)統(tǒng)計集合中各元素出現(xiàn)次數(shù)的示例代碼

    統(tǒng)計數(shù)組中各個元素數(shù)量是一個很常用的功能,本文主要為大家介紹了如何利用Matlab優(yōu)雅的統(tǒng)計集合中各元素出現(xiàn)的次數(shù),感興趣的可以了解一下
    2022-05-05
  • C++中vector的模擬實現(xiàn)實例詳解

    C++中vector的模擬實現(xiàn)實例詳解

    vector是表示可變大小數(shù)組的序列容器,它也采用連續(xù)存儲空間來存儲元素,因此可以采用下標(biāo)對vector的元素進(jìn)行訪問,這篇文章主要給大家介紹了關(guān)于C++中vector模擬實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • C++ xxx_cast實現(xiàn)轉(zhuǎn)換代碼實例解析

    C++ xxx_cast實現(xiàn)轉(zhuǎn)換代碼實例解析

    這篇文章主要介紹了C++xxx_cast轉(zhuǎn)換代碼實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • 提升編程能力的C語言技巧總結(jié)

    提升編程能力的C語言技巧總結(jié)

    這篇文章主要為大家總結(jié)了一些C語言技巧的相關(guān)資料,可以幫助大家大大提升編程能力。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-12-12

最新評論