传递给命令行程序的main方法的参数是什么:
int main(int argc, const char * argv[])
第一个int是什么意思?
第二个参数是什么,是一个字符数组?
如何使用这些?
此外,实际使用的是命令行项目类型,而不是用它来学习obj-c即练习。
答案 0 :(得分:28)
argc
表示“参数计数”。它表示将多少个参数传递到可执行文件中。
argv
表示“参数值”。它是指向字符数组的指针。或者以另一种方式考虑它,它是一个C字符串数组(因为C字符串只是字符数组)。
所以如果你有一个程序“foo”并执行它:
foo -bar baz -theAnswer 42
然后在main()
函数中,argc
将为5,argv
将为:
argv[0] = "/full/path/to/foo";
argv[1] = "-bar";
argv[2] = "baz";
argv[3] = "-theAnswer";
argv[4] = "42";
答案 1 :(得分:5)
main()
的参数是一个unix约定,用于在执行程序时访问命令行中给出的参数。在Cocoa应用程序中,您可以使用普通的旧C方式访问它们,或者您可以使用NSProcessInfo
的 - arguments
方法将它们放入NSArray
个NSString
个对象中,或使用NSUserDefaults
将它们作为字典中的值。
答案 2 :(得分:3)
只是添加其他答案 - Objective-C同时针对OS X和iOS。虽然iOS命令行应用程序没有太大价值,但OS X上的shell仍然被广泛使用,并且有很多人在编写命令行工具。
答案 3 :(得分:2)
主要来自C,而不是Objective-c。 Argc为您提供传递给C程序的命令行参数的数量。 Argv是一个C字符串数组,包含命令行参数。
只要您想从命令行编写命令行工具或与之交互的程序,就可以使用它们和命令行项目。
答案 4 :(得分:2)
正如wikipedia(以及任何其他来源所说):
int main(void)
int main(int argc, char *argv[])
参数argc
,参数计数和argv
,参数向量分别给出程序命令行参数的数量和值。 argc
和argv
的名称可以是C中的任何有效标识符,但使用这些名称是常见的惯例。在C ++中,名称应按字面意思理解,如果需要严格一致,则省略参数列表中的“void
”。 C和C ++标准也允许其他依赖于平台的格式,除了在C ++中返回类型必须保持为int;例如,Unix(虽然不是POSIX.1)和Microsoft Windows有第三个参数给出程序的环境,否则可以通过stdlib.h中的getenv访问:
int main(int argc, char **argv, char **envp)
答案 5 :(得分:0)
此外,实际使用的是命令行项目类型,而不是用它来学习obj-c即练习。
实际用途是使用您编写的框架或应用程序中的代码创建命令行工具。辅助程序,实用程序,启动代理程序和守护程序,所有这些后台进程通常都是作为命令行工具实现的。