我通常看到 main()
函数被称为:
int main(int argc, char** argv)
int main(int argc, char* argv[])
int main(void)
关于这些定义:
- 严格地说,对于
char** argv
和char* argv[]
,哪一个更好还是它们100%可互换的吗? - 由于
argc
和参数字符串(应该是?)都是不可变的,为什么它们都不是const
类型的?或者这只是出于惯例/历史目的而省略了。我想这可以通过以下方式完成:const char **argv = (const char **) argv;
,但很奇怪为什么没有这样做(例如,是否有更改接收到的参数的原因?)
argv[1][len = strlen(argv[1])] = '*'; argv[1][len+1] = 0;
C
,另一个被标记为C++
-- 也许可以将重复的标记为 C 和 C++ 两者? - David542argc
的情况下,没有太多理由将值参数声明为const
。这样做也会使漂亮的习惯用法while(argc--) printf("%s\n", *argv++);
无效化。 - dxivargv[n]
是否可写?”。 - chux - Reinstate Monica