void method(double *v)
void method(double v[5])
这两者有什么区别吗?
第二个是否更具体,如v
长度限制为 5 个元素?
当数组被声明为参数类型时,会退化为指针类型。在你的例子中,
void method(double v[5]);
Here 5
根本没有发挥任何作用,就是这样微不足道那你may omit完全一样,然后写成这样:
void method(double v[]);
这与之前的声明完全相同。由于它衰减为指针,所以上面两者完全相同:
void method(double *v); //because array decays to pointer, anyway
也就是说,以下所有内容都是同一函数的声明:
void method(double v[5]); //ok : declaration
void method(double v[]); //ok : redeclaration of the above
void method(double *v); //ok : redeclaration of the above
一切都完全相同。完全没有区别。
但请注意,以下内容有所不同:
void f(double (&v)[5]);
它声明了一个函数,该函数可以采用大小为双精度的数组exactly 5
。如果您传递任何其他大小的数组(或者如果您传递指针),它将给出编译错误!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)