Objective-c主程序,是什么:int argc,const char * argv []

时间:2011-01-01 21:14:06

标签: objective-c

传递给命令行程序的main方法的参数是什么:

int main(int argc, const char * argv[])

第一个int是什么意思?

第二个参数是什么,是一个字符数组?

如何使用这些?

此外,实际使用的是命令行项目类型,而不是用它来学习obj-c即练习。

6 个答案:

答案 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方法将它们放入NSArrayNSString个对象中,或使用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,参数向量分别给出程序命令行参数的数量和值。 argcargv的名称可以是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即练习。

实际用途是使用您编写的框架或应用程序中的代码创建命令行工具。辅助程序,实用程序,启动代理程序和守护程序,所有这些后台进程通常都是作为命令行工具实现的。