C++的argc和argv的问题
int main(int argc, char *argv[]) {
argc=2;
if (argc<2) {
cout << "Hi! Why not pass me arguments?\n";
}
else {
for (int k = 1; k!=argc; ++k)
cout << "Hello," << argv[k] << "!\n";
}
return 0;
}
求大神解释此段代码的目的,以及为什么会出现这样的输出结果
操作系统会把你调用程序传入的命令行传给argc和argv,根据参数的空格拆分出来。前者是数量,后者是字符串数组。
你可以打开windows的运行或者命令行提示符
输入 x:\path\你的程序.exe xxx yyy
这个xxx yyy就是参数
argc和argv只是变量名。习惯用这两个而已
你这个代码有意思,初学者啥也不怕,学过几年的,就别扭了,考察空指针概念呀,空指针对于C语言来说,是可以定义的,可以直接使用,但不能间接使用。所谓间接使用比如struct A ,如果A是null,不能使用null.xxxx这样的间接访问,另外C语言有指针乱指现象,只要指针游标还在内存范围之内就可以,java超出规则早就数组越界异常了,所以你这种现场没什么争议,只是认为的把错误的单程正确的来理解就可以了。
参数很有用。你有没有执行过命令。对于没有图形界面也不使用配置文件的命令行程序,参数可以决定程序怎么运行。
比如说,dir是一个列举文件目录的命令,默认情况下,它会以详细列表的方式列举当前目录下的非隐藏文件:dir
但是这不能满足所有的要求,如果文件很多,你想分屏显示,就需要加上p参数dir /p
如果你只想查找某种类型的文件,比如可执行文件,可以加通配符dir *.exe
如果你像在搜索结果中包含隐藏文件,需要a参数dir /a
有时候你可以同时带上几个参数,比如dir /a /p *.exe
作为约定,一些程序会支持h参数,以便当使用者忘记怎么用的时候给出一个简短的帮助,dir也不例外dir /h
可见,参数是很有用的。它可以使得一个程序被用户自定义。
agrc是命令行参数的个数,argv是每一个参数的具体内容。
你传了什么参数,就可以在程序中获取来解析,执行不同的动作
argc, argv 这两个变量的作用楼上都答过了。为什么出现这个结果,是因为你在main函数一开始,就给argc赋值为2,所以就执行else语句。如果你没有给输入参数进去,argc应该是1的。