为什么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[])
然后让开发人员在需要更改它们时将它们复制到局部变量中?
答案 0 :(得分:1)
对于[...]来说,如果他需要,那么让开发者将它们复制到局部变量中会不会更好(对于更高效)改变它们?
(强调我的) - 复制将不再有效。反过来。多余的复制是浪费的,因为它的CPU和内存都很昂贵。
(顺便说一句,在这里谈论效率是不是很荒谬?除非你通过1000000个参数来解决你的程序,这几乎没有什么区别,这是一种过早的优化。)
无论如何,main()
const
的参数确实很少(如果有的话)。你似乎已经正确地把握了“指针 - const
对象作为函数参数”的主要思想,它当然是合理的,但这是每个人都会调用的函数,因此需要安全。他们没有做出意想不到的事情,比如修改他们的论点。
main()
是特殊的,因为我们都知道它的目的,操作系统只会调用它(它实际上并不关心你是否改变它的参数)等等。确实是C中常见的习惯用法,如果需要,可以修改程序参数。