#include <iostream>
using namespace std;
int main(int argc, char* argv[]) {
int i;
i = 1;
while (i < argc) {
cout << argv[i] << endl;
i = i + 1;
}
}
Run Code Online (Sandbox Code Playgroud)
命令行参数列为bfi
我只是学习argc和argv,但据我所知,argc是从命令行传递的参数数量(本例中为3),而argv是这些参数的数组,在这种情况下为[bfi].所以使用它,我直觉地认为这个循环应该输出argv [1],然后是argv [2],然后终止.因此最终的输出是:
F
一世
但是,给出的解决方案是:
b
F
一世
哪个让我感到困惑.有人能够解释我的思维过程出错吗?
argv[0] 实际上是您用来运行程序的名称.
所以,如果你跑了:
./myProgram b f i
Run Code Online (Sandbox Code Playgroud)
argv包含["./myProgram", "b", "f", "i"],和argc == 4.
(这实际上不是标准的一部分,但在大多数平台上都是正常行为).
另外,请注意保证argv[argc]==nullptr,如果你愿意,可以迭代有效指针,而不是使用索引.
甲for环保持迭代逻辑更多自含式比while; 您编写的循环的更常见形式将是这样的:
for (int i = 0; i < argc; ++i) {
std::cout << argv[i] << '\n'; // see note below
}
Run Code Online (Sandbox Code Playgroud)
此外,请重新考虑您对通常被视为不良做法的使用:using namespace std;和endl.
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |