在C/C++中,main函数接收的参数类型为char*
.
int main(int argc, char* argv[]){
return 0;
}
argv
是一个数组char*
,并指向字符串。这些字符串位于哪里?它们是在堆、栈还是其他地方?
这是 C 标准(n1256 http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf) says:
5.1.2.2.1 Program startup
...
2 If they are declared, the parameters to the main function shall obey the following
constraints:
- 的价值argc应为非负数。
-
argv[argc]应为空指针。
- 如果值argc大于零,数组成员argv[0]通过argv[argc-1]包容性应包含指向字符串的指针,这些字符串给出
在程序启动之前由主机环境实现定义的值。这
目的是向程序提供在程序启动之前确定的信息
来自托管环境中的其他地方。如果宿主环境不具备
提供包含大写和小写字母的字符串,实现
应确保以小写形式接收字符串。
- 如果值argc大于零,指向的字符串argv[0]代表程序名称;argv[0][0]如果
程序名称无法从主机环境中获得。如果值argc是
大于一,指向的字符串argv[1]通过argv[argc-1]代表程序参数。
- 参数argc and argv和指向的字符串argv数组应
可由程序修改,并在程序之间保留最后存储的值
启动和程序终止。
最后一个项目符号是最有趣的字符串值存储位置。它没有指定堆或堆栈,但它确实要求字符串可写并且具有静态范围,这使得some对字符串内容所在位置的限制。正如其他人所说,具体细节将取决于实施情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)