为什么main()的参数不是const限定的?

时间:2013-04-27 04:27:05

标签: c++ operating-system arguments

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

del readme.txt (DOS)

rm readme.txt (Unix)

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

大多数二进制文件都没有触及参数,为什么操作系统会复制它们并将它们作为可写入应用程序?

将它们设为只读并使C ++主函数(例如)像这样更好(我的意思是更有效率)

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

而不是

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

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

1 个答案:

答案 0 :(得分:1)

  

对于[...]来说,如果他需要,那么让开发者将它们复制到局部变量中会不会更好(对于更高效)改变它们?

(强调我的) - 复制将不再有效。反过来。多余的复制是浪费的,因为它的CPU和内存都很昂贵。

(顺便说一句,在这里谈论效率是不是很荒谬?除非你通过1000000个参数来解决你的程序,这几乎没有什么区别,这是一种过早的优化。)

无论如何,main() const的参数确实很少(如果有的话)。你似乎已经正确地把握了“指针 - const对象作为函数参数”的主要思想,它当然是合理的,但这是每个人都会调用的函数,因此需要安全。他们没有做出意想不到的事情,比如修改他们的论点。

然而,

main()是特殊的,因为我们都知道它的目的,操作系统只会调用它(它实际上并不关心你是否改变它的参数)等等。确实是C中常见的习惯用法,如果需要,可以修改程序参数。