【发布时间】:2017-08-13 11:08:44
【问题描述】:
我试图弄清楚以这种格式将 argv 变量传递给 main 会产生什么结果。 主要(int argc,char const * argv)。
我知道正确的使用方法是 main(int argc, char const **argv) 或 main( int argc, char const *argv[])。
这是我的代码sn-p,
#include <stdio.h>
int
main( int argc, char const * argv ) {
for( int i = 0; i < argc; ++i ) {
printf("%s\n", argv[i]);
}
}
这里是输出,
$ ./a.exe
..
$ ./a.exe 1
2
....
$ ./a.exe 1 2
2
...
它是否从任何 argv 点获取?为什么它甚至在到达 argc 之前就终止了。
【问题讨论】:
-
除非您的实现允许,否则这实际上不是正确的方法。 C 标准仅将
argv指定为指向 non-const 字符串的指针缓冲区。 -
在您编写的代码中,
argv[i]将是一个char值。在printf调用中,它将被提升为int值。但是,printf函数需要一个有效指针,该指针指向该位置的以 null 结尾的char序列,而不是一些虚假的指针值。
标签: c command-line-arguments argv