bra*_*urm 4 c command-line-arguments
我不明白两者之间有什么区别
int main(int argc, char* argv[]){;}
Run Code Online (Sandbox Code Playgroud)
和
int main(int argc, const char* argv[]){;}
Run Code Online (Sandbox Code Playgroud)
是。
我知道 achar*[]
和之间的区别const char*[]
,但我想知道为什么人们想使用后者。
是否存在想要更改命令行参数的用例?添加的最佳实践是什么const
?
int main(int argc, char *argv[])
main
是根据 C 标准声明托管环境的定义方式,根据 C 2018 5.1.2.2.1 1。int main(int argc, const char *argv[])
不是。
在适用的地方使用它const
来表明所指向的对象不会改变是很好的,但必须使用得当。类型char *[]
和const char *[]
不兼容,并且不能与参数声明或参数类型互换。如果main
使用 声明const char *argv[]
,则该行为不是由 C 标准定义的。
至于为什么规定的声明是char *argv[]
而不是const char *argv[]
,部分是历史原因,部分是因为一些处理命令行参数的技术会就地修改参数。