1

为什么 的参数main()是可写的?我的意思是一个程序会修改它们 1% 的时间或类似的东西?

del readme.txt (DOS)

或者

rm readme.txt (Unix)

他们都不需要修改字符串"readme.txt"(即使他们删除了名为 like that 的文件)。

大多数二进制文件不涉及参数,那么为什么操作系统会复制它们并将它们作为可写给应用程序呢?

让它们只读并拥有像这样的 C++ 主函数(例如)不是更好(我的意思是更有效)吗

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

代替

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

然后让开发人员在需要更改它们时将它们复制到局部变量中?

4

1 回答 1

1

[...] 然后让开发人员在需要更改它们时将它们复制到局部变量中不是更好(我的意思是更有效)吗?

(强调我的) - 复制根本不会更有效。反过来。多余的复制是浪费的,因为它消耗 CPU 和内存。

(顺便说一句,在这里谈效率不是很可笑吗?除非你给你的程序传递 1000000 个参数,否则这几乎没有什么不同,这是一种过早的优化。)

无论如何,确实很少(如果有的话)需要存在的main()论点const。您似乎已经正确掌握了“将指向const对象的指针作为函数参数”的主要思想,这当然是合理的,但这是每个人都会调用的函数,因此从某种意义上说,它们需要是安全的不要做意想不到的事情,例如修改他们的论点。

main()然而,它是特殊的,因为我们都确切地知道它的目的,操作系统只会调用它(它真的不在乎你是否改变它的参数)等等。它确实是 C 中的一个常见习语如果需要,修改程序参数。

于 2013-04-27T04:50:27.513 回答