C/C++最重要的函数是main()函数。它主要由int的返回类型定义,没有参数:
null
int main() { /* ... */ }
我们也可以在C和C++中给出命令行参数。在操作系统的命令行外壳中,命令行参数在程序名称之后给出。 为了传递命令行参数,我们通常使用两个参数定义main():第一个参数是命令行参数的数量,第二个参数是命令行参数的列表。
int main(int argc, char *argv[]) { /* ... */ }
或
int main(int argc, char **argv) { /* ... */ }
- argc(参数计数) 是int,存储用户传递的命令行参数数,包括程序名。所以,如果我们将一个值传递给一个程序,argc的值将是2(一个用于参数,一个用于程序名)
- argc的值应为非负。
- argv(参数向量) 是列出所有参数的字符指针数组。
- 如果argc大于零,则从argv[0]到argv[argc-1]的数组元素将包含指向字符串的指针。
- Argv[0]是程序名,之后直到Argv[argc-1]每个元素都是命令行参数。
为了更好地理解,请在linux机器上运行此代码。
// Name of program mainreturn.cpp #include <iostream> using namespace std; int main( int argc, char ** argv) { cout << "You have entered " << argc << " arguments:" << "" ; for ( int i = 0; i < argc; ++i) cout << argv[i] << "" ; return 0; } |
输入:
$ g++ mainreturn.cpp -o main $ ./main geeks for geeks
输出:
You have entered 4 arguments: ./main geeks for geeks
注: C和C++标准也允许其他平台相关的格式;例如,UNIX(虽然不是POSIX 1)和微软Visual C++有第三个参数赋予程序环境,否则在STDLIB中通过GETEV访问。h:参考 C程序打印环境变量 详细信息。
命令行参数的属性:
- 它们被传递给main()函数。
- 它们是调用程序时提供给程序的参数。
- 它们用于从外部控制程序,而不是在代码内部硬编码这些值。
- argv[argc]是一个空指针。
- argv[0]保存程序的名称。
- argv[1]指向第一个命令行参数,argv[n]指向最后一个参数。
注: 可以传递所有由空格分隔的命令行参数,但如果参数本身有空格,则可以通过将这些参数放在双引号“”或单引号内来传递这些参数。
// C program to illustrate // command line arguments #include<stdio.h> int main( int argc, char * argv[]) { int counter; printf ( "Program Name Is: %s" ,argv[0]); if (argc==1) printf ( "No Extra Command Line Argument Passed Other Than Program Name" ); if (argc>=2) { printf ( "Number Of Arguments Passed: %d" ,argc); printf ( "----Following Are The Command Line Arguments Passed----" ); for (counter=0;counter<argc;counter++) printf ( "argv[%d]: %s" ,counter,argv[counter]); } return 0; } |
不同场景下的输出:
- 毫无争议: 当编译并执行上述代码而不传递任何参数时,它将生成以下输出。
$ ./a.out Program Name Is: ./a.out No Extra Command Line Argument Passed Other Than Program Name
- 三个论点: 当使用三个参数编译和执行上述代码时,它将生成以下输出。
$ ./a.out First Second Third Program Name Is: ./a.out Number Of Arguments Passed: 4 ----Following Are The Command Line Arguments Passed---- argv[0]: ./a.out argv[1]: First argv[2]: Second argv[3]: Third
- 单参数: 当上面的代码用一个由空格分隔但包含双引号的参数编译和执行时,它会生成以下输出。
$ ./a.out "First Second Third" Program Name Is: ./a.out Number Of Arguments Passed: 2 ----Following Are The Command Line Arguments Passed---- argv[0]: ./a.out argv[1]: First Second Third
- 单参数,引号中用空格分隔: 当编译和执行上述代码时,使用一个由空格分隔但包含单引号的参数,它将生成以下输出。
$ ./a.out 'First Second Third' Program Name Is: ./a.out Number Of Arguments Passed: 2 ----Following Are The Command Line Arguments Passed---- argv[0]: ./a.out argv[1]: First Second Third
参考资料: http://www.cprogramming.com/tutorial/lesson14.html http://c0x.coding-guidelines.com/5.1.2.2.1.html
本文由 卡提克·阿胡亚 和 阿瓦杜特·帕塔德 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END