说到C,
我知道
void main (int argc, char *argv[])
Run Code Online (Sandbox Code Playgroud)
将参数传递给main是正确的方法,
但出于我写的好奇心
void main (int argc, char *argv[1])
Run Code Online (Sandbox Code Playgroud)
编译后的程序显示与前一个完全相同的结果.
我在第二版中究竟做了什么,有人可以解释一下吗?
提前致谢.
void main (int argc, char *argv[1])
Run Code Online (Sandbox Code Playgroud)
和
void main (int argc, char *argv[])
Run Code Online (Sandbox Code Playgroud)
是等价的.
argv是一个指针(char**),并且为其指定的大小main()不是字符串的实际大小argv- 因为传递给函数的数组会转换为指向其第一个元素的指针.基本上编译器会忽略大小值.
出于同样的原因,您可以指定:
void main (int argc, char *argv[101])
Run Code Online (Sandbox Code Playgroud)
它仍然会像你期望的那样工作.阅读代码的任何人都会感到困惑.但它完全有效.
相关文章:什么是阵列衰减?