博客
关于我
C语言/C++ main函数参数argc和argv不是const的原因
阅读量:594 次
发布时间:2019-03-09

本文共 882 字,大约阅读时间需要 2 分钟。

在C语言编程中,有时会对argcargv这两个参数的类型产生疑问。大家知道,在编程实践中,尽可能使用const是一个不错的习惯。但是,为何我们不能将argcargv默认设为const类型呢?这背后有着什么样的历史原因和编程机制呢?

如果不清楚这些背景知识,可能会觉得这是一个简单的类型设定问题。事实上,这涉及到C语言的历史演变以及与其他编程语言的兼容性。首先,argcargv在C语言中原本被定义为非常量类型。这一设定是因为早期的C语言实现需要与现有的C代码兼容当时的规范。而argv数组存储了程序启动的命令行参数列表,这意味着程序可能会对argv进行修改。

接着,尽管getopt是一种UNIX编程接口,它的原始设计并不会直接修改argv数组本身。然而,它确实会修改指向argv中的元素的指针。这说明,即使使用const类型,也无法完全保护argv)数组不受外部修改的影响。因此,getopt等函数仍然需要将argv设定为非常量类型。

现在,如果我们尝试将argcargv设为const,这并不会带来什么实际的好处。相反,这可能会引发一系列问题。例如,如果您的程序中有这样的代码片段:while (--argc),这样的写法依赖于argc可以被修改(即可以执行后缀操作)。如果argcconst类型,这段代码将无法正常工作。

许多从业多年的开发者依赖于这种通过指针进行操作的获取命令行参数方式。这不仅是因为这种方法在处理较久的编程范式时更加熟悉,而且在某些情况下,这样的操作可能会比使用现代的turnover接口更高效。尽管如此,这也反映出在编程习惯和工具选择上需要根据项目需求和使用场景进行权衡。

换句话说,在没有明确的需要将argcargv修改保护的情况下,将它们设为const类型并没有实际意义。而且,这样的设定可能会破坏许多现有的程序代码,尤其是那些依赖于argcargv的经典实现。如果您不确定这些细节,建议在开发过程中进行横向比较,并仔细阅读相关文档和代码示例。只有当明确知道程序将会在什么时候修改这些变量时,才可以做出类型设定的选择。

转载地址:http://wshpz.baihongyu.com/

你可能感兴趣的文章
python请求html_使用Python请求获取HTML?
查看>>
Python 之匿名函数和偏函数
查看>>
python 之栈的实现
查看>>
python语音播放
查看>>
python语言:装饰器原理
查看>>
Python 交互式数据可视化详解
查看>>
python语言有哪些优点和缺点_Python有哪些优缺点,你了解吗?
查看>>
Python 从入门到精通:30天速成教程到底有多狠?你能坚持下来吗?
查看>>
Python 从数据库中存储和检索密码的最安全方法
查看>>
Python语言及其应用 - 知识点遍历
查看>>
Python 优化提速的 8 个小技巧
查看>>
Python 余弦相似度与皮尔逊相关系数 计算
查看>>
python 使用execjs 报编码错误解决办法,UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xac in position 145: il
查看>>
python 使用filetype校验文件
查看>>
Python 使用flush函数将缓冲区数据立即写磁盘
查看>>
python 使用in判断不准确,in不好使
查看>>
Python 使用pandas 进行查询和统计详解
查看>>
Redis 配置文件redis.conf详细解释
查看>>
python网络爬虫(2)——scrapy框架的基础使用
查看>>
python网络爬虫实例教程试读_Python网络爬虫实战教程(全套完整版) - 学途无忧网 - 做技术的王者 - Powered By EduSoho...
查看>>