目前我分析下面的構造函數:問題的理解ARGLIST構造器
Foam::argList::argList
372 (
373 int& argc, // argc of main
374 char**& argv, // argv of main
375 bool checkArgs,
376 bool checkOpts
377 )
378 : //Initializing
379 args_(argc), //stringList args_ with size argc
380 options_(argc) //HashTable<string> options_ with size argc
381 {
382 // Check if this run is a parallel run by searching for any parallel option
383 // If found call runPar which might filter argv
384 for (int argI = 0; argI < argc; ++argI)
385 {
386 if (argv[argI][0] == '-') //argv is array of pointers //HERE
387 { //inline const Foam::string& Foam::argList::operator[]
//(const label index) const
//{
//return args_[index];
//}
388 const char *optionName = &argv[argI][1]; //Adressenzuordnung
389
390 if (validParOptions.found(optionName))
391 {
392 parRunControl_.runPar(argc, argv);
393 break;
394 }
395 }
396 }
我有一個關於線386問題:
argv的應該是給定的參數主(指針數組... )。用argv [argI],我訪問argv的argI元素,並用[0]調用重載的運算符method []。我真的不知道這裏發生了什麼,也許我錯誤地解釋了一些事情?
問候 streight
它不是一個指針數組。這顯然是一個指向聲明指針的指針。只是你可以索引一個指針(實際上,你不能索引一個數組本身)。 – chris
@chris:如果我看一下char * argv []的一般定義,我認爲它是一個指針數組。此外,在許多教程中,它也被描述爲一系列的指標。 – Streight
你的函數需要一個'char **&',而不是'char * []',但這不重要,因爲看起來像數組的參數實際上是指針。 – chris