main 未定义 但是已经有main 函数了_main函数的参数argc、argv是什么?为什么?

2a7e996c4f4b7c9c02b10b369973cd6b.png

在我刚读大学那会,其他专业的同学都会去考计算机二级,有次一位其他专业的同学向我求教“main函数的argc和argv我们用不到呀,这俩参数是啥意思呢?” 问的我一愣,我们老师也没有教呀,而且书本上好像也没有。通过字面意思我只能告诉他argv是参数数组,argc是参数个数,具体有啥用我也说不上来。实际上我的回答是经不起进一步追问的,argc是argv的长度吗?如果是这样的话,那么既然有了参数数组了,为毛要多传一个参数个数?

实际上,argc和argv是命令行传递给main函数的参数,其中:

  • argv是一个包含多个字符串的数组,其中包含执行文件名和所附带的参数。argv[0]是可执行文件地址(在iOS中它就是.app的文件地址)。

  • argc是argv的长度,也就是参数个数+1。

既然是这样,那为什么还“多此一举”地传个argc呢?主要是因为C99标准规定了这么做,而且传递一个argc可以方便提高后续流程效率(O(1)和O(n)的时间复杂度)。

在我们iOS中,正常程序运行起来,argc是1,argv[0]是我们.app文件路径。我们怎么验证多参数的场景呢?我们可以通过终端命令 xcrun simctl 来启动我们的app并加上参数即可,比如我这里执行:

xcrun simctl launch D3ED4FE2-9821-4CE4-93FA-85B57BFC53B3 com.github.ApesTalk.AskMoreOC I love iOS

顺带复习下 xcrun simctl 安装和运行APP指令:

d8357b70461f4a9097aae1e84826ff12.png

程序中提前写好把参数打印出来的代码逻辑,看到如下结果:

2ad7550595cb214e47d52df6f73d0358.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值