C,什么是"void main(int argc,char*argv [0])",注意argv中的零

use*_*243 1 c

说到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)

编译后的程序显示与前一个完全相同的结果.
我在第二版中究竟做了什么,有人可以解释一下吗?
提前致谢.

P.P*_*.P. 7

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)

它仍然会像你期望的那样工作.阅读代码的任何人都会感到困惑.但它完全有效.

相关文章:什么是阵列衰减?