gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:55:41 24 4
gpt4 key购买 nike

为什么 main() 的参数是可写的?我的意思是程序会在 1% 的时间内修改它们?

del readme.txt (DOS)

rm readme.txt (Unix)

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

大多数二进制文件不涉及参数,那么为什么操作系统要复制它们并将它们赋予应用程序可写的权限?

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

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

代替

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

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

最佳答案

Won't it be better (i mean more efficient) to [...] and then to let the developper copy them in a local variable if he needs to change them ?

(强调我的)- 复制根本不会更有效率。反过来。多余的复制是一种浪费,因为它会占用大量 CPU 和内存。

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

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

然而,

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

关于c++ - 为什么 main() 的参数不是 const 限定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16248336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com