我正在搞乱C/C++中的项目,我注意到了这一点:
C++
#include <iostream.h>
int main (int argc, const char * argv[]) {
// insert code here...
cout << "Hello, World!\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
和
C
#include <stdio.h>
int main (int argc, const char * argv[]) {
// insert code here...
printf("Hello, World!\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所以我总是想知道这个,这些默认参数在int main下的C/C++中究竟做了什么?我知道应用程序仍然会在没有它们的情况下编译,但它们的用途是什么?
它们保存在命令行上传递给程序的参数.例如,如果我有程序a.out,我就这样调用它:
$ ./a.out arg1 arg2
Run Code Online (Sandbox Code Playgroud)
内容argv将是一个包含的字符串数组
"a.out"- 可执行文件的文件名始终是第一个元素"arg1"- 其他论点"arg2"- 我通过了argc保存元素的数量argv(在C中,您需要另一个变量来知道数组中传递给函数时有多少元素).
您可以使用这个简单的程序自己尝试:
C++
#include <iostream>
int main(int argc, char * argv[]){
int i;
for(i = 0; i < argc; i++){
std::cout << "Argument "<< i << " = " << argv[i] << std::endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
C
#include <stdio.h>
int main(int argc, char ** argv){
int i;
for(i = 0; i < argc; i++){
printf("Argument %i = %s\n", i, argv[i]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)