在许多c++ IDE和编译器中,当它为你生成main函数时,它看起来像这样:
int main(int argc, char *argv[])
当我在没有IDE的情况下编写c++代码时,只是使用命令行编译器,我键入:
int main()
没有任何参数。这意味着什么?它对我的程序至关重要吗?
在许多c++ IDE和编译器中,当它为你生成main函数时,它看起来像这样:
int main(int argc, char *argv[])
当我在没有IDE的情况下编写c++代码时,只是使用命令行编译器,我键入:
int main()
没有任何参数。这意味着什么?它对我的程序至关重要吗?
当前回答
main函数可以有两个形参,argc和argv。Argc是一个整数(int)形参,它是传递给程序的参数数。
程序名总是第一个参数,所以一个程序至少有一个参数,argc的最小值为1。但如果程序本身有两个参数,argc的值将是3。
参数argv指向一个字符串数组,称为参数向量。它是一个一维的函数参数字符串数组。
其他回答
argv和argc是在C和c++中将命令行参数传递给main()的方式。
Argc将是argv所指向的字符串数。这将(在实践中)是1加上参数的数量,因为几乎所有的实现都将程序名放在数组的前面。
根据约定,变量命名为argc(参数计数)和argv(参数向量),但它们可以被赋予任何有效的标识符:int main(int num_args, char** arg_strings)同样有效。
如果不打算处理命令行参数,也可以完全省略它们,生成int main()。
试试下面的程序:
#include <iostream>
int main(int argc, char** argv) {
std::cout << "Have " << argc << " arguments:" << std::endl;
for (int i = 0; i < argc; ++i) {
std::cout << argv[i] << std::endl;
}
}
使用./test a1 b2 c3运行它将输出
Have 4 arguments:
./test
a1
b2
c3
Argc是从命令行传入程序的参数数,argv是参数数组。
你可以循环遍历参数,知道它们的数量,像这样:
for(int i = 0; i < argc; i++)
{
// argv[i] is the argument at index i
}
main函数可以有两个形参,argc和argv。Argc是一个整数(int)形参,它是传递给程序的参数数。
程序名总是第一个参数,所以一个程序至少有一个参数,argc的最小值为1。但如果程序本身有两个参数,argc的值将是3。
参数argv指向一个字符串数组,称为参数向量。它是一个一维的函数参数字符串数组。
int main();
这是一个简单的声明。它不能接受任何命令行参数。
int main(int argc, char* argv[]);
当程序必须接受命令行参数时,使用此声明。当像这样运行时:
myprogram arg1 arg2 arg3
argc,或参数计数,将被设置为4(四个参数),argv,或参数向量,将被填充为指向"myprogram", "arg1", "arg2"和"arg3"的字符串指针。程序调用(myprogram)包含在参数中!
或者,你可以用:
int main(int argc, char** argv);
这也是成立的。
你可以添加另一个参数:
int main (int argc, char *argv[], char *envp[])
参数envp还包含环境变量。每个条目都遵循以下格式:
VARIABLENAME=VariableValue
是这样的:
SHELL=/bin/bash
环境变量列表以空结尾。
重要提示:不要在调用system()时直接使用任何argv或envp值!这是一个巨大的安全漏洞,因为恶意用户可以将环境变量设置为命令行命令,并(潜在地)造成巨大的破坏。一般来说,不要使用system()。通过C库实现几乎总是有更好的解决方案。
以防你从中学到什么
#include<iostream>
using namespace std;
int main(int argc, char** argv) {
cout << "This program has " << argc << " arguments:" << endl;
for (int i = 0; i < argc; ++i) {
cout << argv[i] << endl;
}
return 0;
}
这个程序有3个参数。然后输出是这样的。
C:\Users\user\Desktop\hello.exe
hello
people